@@ -212,8 +212,9 @@ function run(root, appName, version, verbose, originalDirectory, template) {
212
212
checkNodeVersion ( packageName ) ;
213
213
214
214
// Since react-scripts has been installed with --save
215
- // We need to move it into devDependencies and rewrite package.json
216
- moveReactScriptsToDev ( packageName ) ;
215
+ // we need to move it into devDependencies and rewrite package.json
216
+ // also ensure react dependencies have caret version range
217
+ fixDependencies ( packageName ) ;
217
218
218
219
var scriptsPath = path . resolve (
219
220
process . cwd ( ) ,
@@ -325,7 +326,29 @@ function checkAppName(appName) {
325
326
}
326
327
}
327
328
328
- function moveReactScriptsToDev ( packageName ) {
329
+ function makeCaretRange ( dependencies , name ) {
330
+ var version = dependencies [ name ] ;
331
+
332
+ if ( typeof version === 'undefined' ) {
333
+ console . error (
334
+ chalk . red ( 'Missing ' + name + ' dependency in package.json' )
335
+ ) ;
336
+ process . exit ( 1 ) ;
337
+ }
338
+
339
+ var patchedVersion = '^' + version ;
340
+
341
+ if ( ! semver . validRange ( patchedVersion ) ) {
342
+ console . error (
343
+ 'Unable to patch ' + name + ' dependency version because version ' + chalk . red ( version ) + ' will become invalid ' + chalk . red ( patchedVersion )
344
+ ) ;
345
+ patchedVersion = version ;
346
+ }
347
+
348
+ dependencies [ name ] = patchedVersion ;
349
+ }
350
+
351
+ function fixDependencies ( packageName ) {
329
352
var packagePath = path . join ( process . cwd ( ) , 'package.json' ) ;
330
353
var packageJson = require ( packagePath ) ;
331
354
@@ -349,6 +372,9 @@ function moveReactScriptsToDev(packageName) {
349
372
packageJson . devDependencies [ packageName ] = packageVersion ;
350
373
delete packageJson . dependencies [ packageName ] ;
351
374
375
+ makeCaretRange ( packageJson . dependencies , 'react' ) ;
376
+ makeCaretRange ( packageJson . dependencies , 'react-dom' ) ;
377
+
352
378
fs . writeFileSync ( packagePath , JSON . stringify ( packageJson , null , 2 ) ) ;
353
379
}
354
380
0 commit comments