@@ -11,12 +11,15 @@ var createJestConfig = require('../utils/createJestConfig');
1111var fs = require ( 'fs-extra' ) ;
1212var path = require ( 'path' ) ;
1313var paths = require ( '../config/paths' ) ;
14+ var isReactScriptsLinked = require ( '../utils/isReactScriptsLinked' ) ;
1415var prompt = require ( 'react-dev-utils/prompt' ) ;
1516var spawnSync = require ( 'cross-spawn' ) . sync ;
1617var chalk = require ( 'chalk' ) ;
1718var green = chalk . green ;
1819var cyan = chalk . cyan ;
1920
21+ var reactScriptsLinked = isReactScriptsLinked ( ) ;
22+
2023prompt (
2124 'Are you sure you want to eject? This action is permanent.' ,
2225 false
@@ -28,8 +31,15 @@ prompt(
2831
2932 console . log ( 'Ejecting...' ) ;
3033
34+ // NOTE: get ownPath and appPath from config/paths.js ?
3135 var ownPath = path . join ( __dirname , '..' ) ;
32- var appPath = path . join ( ownPath , '..' , '..' ) ;
36+ var appPath ;
37+
38+ if ( reactScriptsLinked ) {
39+ appPath = path . resolve ( '.' ) ;
40+ } else {
41+ appPath = path . join ( ownPath , '..' , '..' ) ;
42+ }
3343
3444 function verifyAbsent ( file ) {
3545 if ( fs . existsSync ( path . join ( appPath , file ) ) ) {
@@ -135,7 +145,6 @@ prompt(
135145 ) ;
136146
137147 // Add Babel config
138-
139148 console . log ( ' Adding ' + cyan ( 'Babel' ) + ' preset' ) ;
140149 appPackage . babel = babelConfig ;
141150
@@ -151,11 +160,15 @@ prompt(
151160
152161 if ( fs . existsSync ( paths . yarnLockFile ) ) {
153162 console . log ( cyan ( 'Running yarn...' ) ) ;
154- fs . removeSync ( ownPath ) ;
163+ if ( ! reactScriptsLinked ) {
164+ fs . removeSync ( ownPath ) ;
165+ }
155166 spawnSync ( 'yarnpkg' , [ ] , { stdio : 'inherit' } ) ;
156167 } else {
157168 console . log ( cyan ( 'Running npm install...' ) ) ;
158- fs . removeSync ( ownPath ) ;
169+ if ( ! reactScriptsLinked ) {
170+ fs . removeSync ( ownPath ) ;
171+ }
159172 spawnSync ( 'npm' , [ 'install' ] , { stdio : 'inherit' } ) ;
160173 }
161174 console . log ( green ( 'Ejected successfully!' ) ) ;
0 commit comments