11
11
12
12
var path = require ( 'path' ) ;
13
13
14
+ // We support resolving modules according to NODE_PATH.
15
+ // This lets you use absolute paths in imports inside large monorepos:
16
+ // https://github.com/facebookincubator/create-react-app/issues/253.
17
+ // It works just like NODE_PATH in Node:
18
+ // https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders
19
+ // We will export `nodePaths` as an array of absolute paths.
20
+ // It will then be used by Webpack (and potentially other tools).
21
+ var nodePaths = ( process . env . NODE_PATH || '' )
22
+ . split ( process . platform === 'win32' ? ';' : ':' )
23
+ . filter ( Boolean )
24
+ . map ( p => path . resolve ( p ) ) ;
25
+
14
26
function resolveApp ( relativePath ) {
15
27
return path . resolve ( relativePath ) ;
16
28
}
@@ -22,13 +34,15 @@ module.exports = {
22
34
appPackageJson : resolveApp ( 'package.json' ) ,
23
35
appSrc : resolveApp ( 'src' ) ,
24
36
appNodeModules : resolveApp ( 'node_modules' ) ,
25
- ownNodeModules : resolveApp ( 'node_modules' )
37
+ ownNodeModules : resolveApp ( 'node_modules' ) ,
38
+ nodePaths : nodePaths
26
39
} ;
27
40
28
41
// @remove -on-eject-begin
29
42
function resolveOwn ( relativePath ) {
30
43
return path . resolve ( __dirname , relativePath ) ;
31
44
}
45
+
32
46
// config before eject: we're in ./node_modules/react-scripts/config/
33
47
module . exports = {
34
48
appBuild : resolveApp ( 'build' ) ,
@@ -37,7 +51,8 @@ module.exports = {
37
51
appSrc : resolveApp ( 'src' ) ,
38
52
appNodeModules : resolveApp ( 'node_modules' ) ,
39
53
// this is empty with npm3 but node resolution searches higher anyway:
40
- ownNodeModules : resolveOwn ( '../node_modules' )
54
+ ownNodeModules : resolveOwn ( '../node_modules' ) ,
55
+ nodePaths : nodePaths
41
56
} ;
42
57
// @remove -on-eject-end
43
58
@@ -48,6 +63,7 @@ module.exports = {
48
63
appPackageJson : resolveOwn ( '../package.json' ) ,
49
64
appSrc : resolveOwn ( '../template/src' ) ,
50
65
appNodeModules : resolveOwn ( '../node_modules' ) ,
51
- ownNodeModules : resolveOwn ( '../node_modules' )
66
+ ownNodeModules : resolveOwn ( '../node_modules' ) ,
67
+ nodePaths : nodePaths
52
68
} ;
53
69
// @remove -on-publish-end
0 commit comments