Skip to content

Commit c71337f

Browse files
committed
Tweak how NODE_PATH is handled
1 parent 82066ac commit c71337f

File tree

3 files changed

+19
-13
lines changed

3 files changed

+19
-13
lines changed

config/paths.js

+7-3
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,17 @@
1111

1212
var path = require('path');
1313

14-
// We support resolving modules according to NODE_PATH.
14+
// We support resolving modules according to `NODE_PATH`.
1515
// This lets you use absolute paths in imports inside large monorepos:
1616
// https://github.com/facebookincubator/create-react-app/issues/253.
17-
// It works just like NODE_PATH in Node:
17+
18+
// It works similar to `NODE_PATH` in Node itself:
1819
// https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders
20+
1921
// We will export `nodePaths` as an array of absolute paths.
20-
// It will then be used by Webpack (and potentially other tools).
22+
// It will then be used by Webpack configs.
23+
// Jest doesn’t need this because it already handles `NODE_PATH` out of the box.
24+
2125
var nodePaths = (process.env.NODE_PATH || '')
2226
.split(process.platform === 'win32' ? ';' : ':')
2327
.filter(Boolean)

config/webpack.config.dev.js

+6-5
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,12 @@ module.exports = {
6767
publicPath: '/'
6868
},
6969
resolve: {
70-
// This allows you to set a root for where Webpack should look for modules.
71-
// It must be an absolute path or an array of absolute paths.
72-
// This lets you use absolute paths in imports inside large monorepos:
73-
// https://github.com/facebookincubator/create-react-app/issues/253.
74-
root: paths.nodePaths,
70+
// This allows you to set a fallback for where Webpack should look for modules.
71+
// We read `NODE_PATH` environment variable in `paths.js` and pass paths here.
72+
// We use `fallback` instead of `root` because we want `node_modules` to "win"
73+
// if there any conflicts. This matches Node resolution mechanism.
74+
// https://github.com/facebookincubator/create-react-app/issues/253
75+
fallback: paths.nodePaths,
7576
// These are the reasonable defaults supported by the Node ecosystem.
7677
extensions: ['.js', '.json', ''],
7778
alias: {

config/webpack.config.prod.js

+6-5
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,12 @@ module.exports = {
6262
publicPath: publicPath
6363
},
6464
resolve: {
65-
// This allows you to set a root for where Webpack should look for modules.
66-
// It must be an absolute path or an array of absolute paths.
67-
// This lets you use absolute paths in imports inside large monorepos:
68-
// https://github.com/facebookincubator/create-react-app/issues/253.
69-
root: paths.nodePaths,
65+
// This allows you to set a fallback for where Webpack should look for modules.
66+
// We read `NODE_PATH` environment variable in `paths.js` and pass paths here.
67+
// We use `fallback` instead of `root` because we want `node_modules` to "win"
68+
// if there any conflicts. This matches Node resolution mechanism.
69+
// https://github.com/facebookincubator/create-react-app/issues/253
70+
fallback: paths.nodePaths,
7071
// These are the reasonable defaults supported by the Node ecosystem.
7172
extensions: ['.js', '.json', ''],
7273
alias: {

0 commit comments

Comments
 (0)