Commit c71337f6 authored by Dan Abramov's avatar Dan Abramov
Browse files

Tweak how NODE_PATH is handled

parent 82066ac4
No related merge requests found
Showing with 19 additions and 13 deletions
+19 -13
...@@ -11,13 +11,17 @@ ...@@ -11,13 +11,17 @@
var path = require('path'); var path = require('path');
// We support resolving modules according to NODE_PATH. // We support resolving modules according to `NODE_PATH`.
// This lets you use absolute paths in imports inside large monorepos: // This lets you use absolute paths in imports inside large monorepos:
// https://github.com/facebookincubator/create-react-app/issues/253. // https://github.com/facebookincubator/create-react-app/issues/253.
// It works just like NODE_PATH in Node:
// It works similar to `NODE_PATH` in Node itself:
// https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders // https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders
// We will export `nodePaths` as an array of absolute paths. // We will export `nodePaths` as an array of absolute paths.
// It will then be used by Webpack (and potentially other tools). // It will then be used by Webpack configs.
// Jest doesn’t need this because it already handles `NODE_PATH` out of the box.
var nodePaths = (process.env.NODE_PATH || '') var nodePaths = (process.env.NODE_PATH || '')
.split(process.platform === 'win32' ? ';' : ':') .split(process.platform === 'win32' ? ';' : ':')
.filter(Boolean) .filter(Boolean)
......
...@@ -67,11 +67,12 @@ module.exports = { ...@@ -67,11 +67,12 @@ module.exports = {
publicPath: '/' publicPath: '/'
}, },
resolve: { resolve: {
// This allows you to set a root for where Webpack should look for modules. // This allows you to set a fallback for where Webpack should look for modules.
// It must be an absolute path or an array of absolute paths. // We read `NODE_PATH` environment variable in `paths.js` and pass paths here.
// This lets you use absolute paths in imports inside large monorepos: // We use `fallback` instead of `root` because we want `node_modules` to "win"
// https://github.com/facebookincubator/create-react-app/issues/253. // if there any conflicts. This matches Node resolution mechanism.
root: paths.nodePaths, // https://github.com/facebookincubator/create-react-app/issues/253
fallback: paths.nodePaths,
// These are the reasonable defaults supported by the Node ecosystem. // These are the reasonable defaults supported by the Node ecosystem.
extensions: ['.js', '.json', ''], extensions: ['.js', '.json', ''],
alias: { alias: {
......
...@@ -62,11 +62,12 @@ module.exports = { ...@@ -62,11 +62,12 @@ module.exports = {
publicPath: publicPath publicPath: publicPath
}, },
resolve: { resolve: {
// This allows you to set a root for where Webpack should look for modules. // This allows you to set a fallback for where Webpack should look for modules.
// It must be an absolute path or an array of absolute paths. // We read `NODE_PATH` environment variable in `paths.js` and pass paths here.
// This lets you use absolute paths in imports inside large monorepos: // We use `fallback` instead of `root` because we want `node_modules` to "win"
// https://github.com/facebookincubator/create-react-app/issues/253. // if there any conflicts. This matches Node resolution mechanism.
root: paths.nodePaths, // https://github.com/facebookincubator/create-react-app/issues/253
fallback: paths.nodePaths,
// These are the reasonable defaults supported by the Node ecosystem. // These are the reasonable defaults supported by the Node ecosystem.
extensions: ['.js', '.json', ''], extensions: ['.js', '.json', ''],
alias: { alias: {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment