@@ -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 ( ) ,
@@ -326,7 +327,29 @@ function checkAppName(appName) {
326
327
}
327
328
}
328
329
329
- function moveReactScriptsToDev ( packageName ) {
330
+ function makeCaretRange ( dependencies , name ) {
331
+ var version = dependencies [ name ] ;
332
+
333
+ if ( typeof version === 'undefined' ) {
334
+ console . error (
335
+ chalk . red ( 'Missing ' + name + ' dependency in package.json' )
336
+ ) ;
337
+ process . exit ( 1 ) ;
338
+ }
339
+
340
+ var patchedVersion = '^' + version ;
341
+
342
+ if ( ! semver . validRange ( patchedVersion ) ) {
343
+ console . error (
344
+ 'Unable to patch ' + name + ' dependency version because version ' + chalk . red ( version ) + ' will become invalid ' + chalk . red ( patchedVersion )
345
+ ) ;
346
+ patchedVersion = version ;
347
+ }
348
+
349
+ dependencies [ name ] = patchedVersion ;
350
+ }
351
+
352
+ function fixDependencies ( packageName ) {
330
353
var packagePath = path . join ( process . cwd ( ) , 'package.json' ) ;
331
354
var packageJson = require ( packagePath ) ;
332
355
@@ -350,6 +373,9 @@ function moveReactScriptsToDev(packageName) {
350
373
packageJson . devDependencies [ packageName ] = packageVersion ;
351
374
delete packageJson . dependencies [ packageName ] ;
352
375
376
+ makeCaretRange ( packageJson . dependencies , 'react' ) ;
377
+ makeCaretRange ( packageJson . dependencies , 'react-dom' ) ;
378
+
353
379
fs . writeFileSync ( packagePath , JSON . stringify ( packageJson , null , 2 ) ) ;
354
380
}
355
381
0 commit comments