|
12 | 12 |
|
13 | 13 | var path = require('path');
|
14 | 14 |
|
15 |
| -// True when used as a dependency, false after ejecting |
16 |
| -var isInNodeModules = ( |
17 |
| - 'node_modules' === |
18 |
| - path.basename(path.resolve(path.join(__dirname, '..', '..'))) |
| 15 | +// True after ejecting, false when used as a dependency |
| 16 | +var isEjected = ( |
| 17 | + path.resolve(path.join(__dirname, '..')) === |
| 18 | + path.resolve(process.cwd()) |
19 | 19 | );
|
20 | 20 |
|
21 | 21 | // Are we developing create-react-app locally?
|
22 | 22 | var isInCreateReactAppSource = (
|
23 | 23 | process.argv.some(arg => arg.indexOf('--debug-template') > -1)
|
24 | 24 | );
|
25 | 25 |
|
26 |
| -function resolve(relativePath) { |
| 26 | +function resolveOwn(relativePath) { |
27 | 27 | return path.resolve(__dirname, relativePath);
|
28 | 28 | }
|
29 | 29 |
|
| 30 | +function resolveApp(relativePath) { |
| 31 | + return path.resolve(relativePath); |
| 32 | +} |
| 33 | + |
30 | 34 | if (isInCreateReactAppSource) {
|
31 | 35 | // create-react-app development: we're in ./config/
|
32 | 36 | module.exports = {
|
33 |
| - appBuild: resolve('../build'), |
34 |
| - appHtml: resolve('../template/index.html'), |
35 |
| - appFavicon: resolve('../template/favicon.ico'), |
36 |
| - appPackageJson: resolve('../package.json'), |
37 |
| - appSrc: resolve('../template/src'), |
38 |
| - appNodeModules: resolve('../node_modules'), |
39 |
| - ownNodeModules: resolve('../node_modules') |
| 37 | + appBuild: resolveOwn('../build'), |
| 38 | + appHtml: resolveOwn('../template/index.html'), |
| 39 | + appFavicon: resolveOwn('../template/favicon.ico'), |
| 40 | + appPackageJson: resolveOwn('../package.json'), |
| 41 | + appSrc: resolveOwn('../template/src'), |
| 42 | + appNodeModules: resolveOwn('../node_modules'), |
| 43 | + ownNodeModules: resolveOwn('../node_modules') |
40 | 44 | };
|
41 |
| -} else if (isInNodeModules) { |
| 45 | +} else if (!isEjected) { |
42 | 46 | // before eject: we're in ./node_modules/react-scripts/config/
|
43 | 47 | module.exports = {
|
44 |
| - appBuild: resolve('../../../build'), |
45 |
| - appHtml: resolve('../../../index.html'), |
46 |
| - appFavicon: resolve('../../../favicon.ico'), |
47 |
| - appPackageJson: resolve('../../../package.json'), |
48 |
| - appSrc: resolve('../../../src'), |
49 |
| - appNodeModules: resolve('../..'), |
| 48 | + appBuild: resolveApp('build'), |
| 49 | + appHtml: resolveApp('index.html'), |
| 50 | + appFavicon: resolveApp('favicon.ico'), |
| 51 | + appPackageJson: resolveApp('package.json'), |
| 52 | + appSrc: resolveApp('src'), |
| 53 | + appNodeModules: resolveApp('node_modules'), |
50 | 54 | // this is empty with npm3 but node resolution searches higher anyway:
|
51 |
| - ownNodeModules: resolve('../node_modules') |
| 55 | + ownNodeModules: resolveOwn('../node_modules') |
52 | 56 | };
|
53 | 57 | } else {
|
54 | 58 | // after eject: we're in ./config/
|
55 | 59 | module.exports = {
|
56 |
| - appBuild: resolve('../build'), |
57 |
| - appHtml: resolve('../index.html'), |
58 |
| - appFavicon: resolve('../favicon.ico'), |
59 |
| - appPackageJson: resolve('../package.json'), |
60 |
| - appSrc: resolve('../src'), |
61 |
| - appNodeModules: resolve('../node_modules'), |
62 |
| - ownNodeModules: resolve('../node_modules') |
| 60 | + appBuild: resolveApp('build'), |
| 61 | + appHtml: resolveApp('index.html'), |
| 62 | + appFavicon: resolveApp('favicon.ico'), |
| 63 | + appPackageJson: resolveApp('package.json'), |
| 64 | + appSrc: resolveApp('src'), |
| 65 | + appNodeModules: resolveApp('node_modules'), |
| 66 | + ownNodeModules: resolveApp('node_modules') |
63 | 67 | };
|
64 | 68 | }
|
0 commit comments