@@ -268,7 +268,7 @@ function run(
268
268
template ,
269
269
useYarn
270
270
) {
271
- const packageToInstall = getInstallPackage ( version ) ;
271
+ const packageToInstall = getInstallPackage ( version , originalDirectory ) ;
272
272
const allDependencies = [ 'react' , 'react-dom' , packageToInstall ] ;
273
273
274
274
console . log ( 'Installing packages. This might take a couple of minutes.' ) ;
@@ -365,11 +365,16 @@ function run(
365
365
} ) ;
366
366
}
367
367
368
- function getInstallPackage ( version ) {
368
+ function getInstallPackage ( version , originalDirectory ) {
369
369
let packageToInstall = 'react-scripts' ;
370
370
const validSemver = semver . valid ( version ) ;
371
371
if ( validSemver ) {
372
372
packageToInstall += `@${ validSemver } ` ;
373
+ } else if ( version && version . match ( / ^ f i l e : / ) ) {
374
+ packageToInstall = `file:${ path . resolve (
375
+ originalDirectory ,
376
+ version . match ( / ^ f i l e : ( .* ) ? $ / ) [ 1 ]
377
+ ) } `;
373
378
} else if ( version ) {
374
379
// for tar.gz or alternative paths
375
380
packageToInstall = version ;
@@ -459,6 +464,10 @@ function getPackageName(installPackage) {
459
464
return Promise . resolve (
460
465
installPackage . charAt ( 0 ) + installPackage . substr ( 1 ) . split ( '@' ) [ 0 ]
461
466
) ;
467
+ } else if ( installPackage . match ( / ^ f i l e : / ) ) {
468
+ const installPackagePath = installPackage . match ( / ^ f i l e : ( .* ) ? $ / ) [ 1 ] ;
469
+ const installPackageJson = require ( path . join ( installPackagePath , 'package.json' ) ) ;
470
+ return Promise . resolve ( installPackageJson . name ) ;
462
471
}
463
472
return Promise . resolve ( installPackage ) ;
464
473
}
0 commit comments