@@ -104,12 +104,14 @@ function createApp(name, verbose, version) {
104
104
}
105
105
106
106
function run ( root , appName , version , verbose , originalDirectory ) {
107
+ var installPackage = getInstallPackage ( version ) ;
108
+ var packageName = getPackageName ( installPackage ) ;
107
109
var args = [
108
110
'install' ,
109
111
verbose && '--verbose' ,
110
112
'--save-dev' ,
111
113
'--save-exact' ,
112
- getInstallPackage ( version ) ,
114
+ installPackage ,
113
115
] . filter ( function ( e ) { return e ; } ) ;
114
116
var proc = spawn ( 'npm' , args , { stdio : 'inherit' } ) ;
115
117
proc . on ( 'close' , function ( code ) {
@@ -118,12 +120,12 @@ function run(root, appName, version, verbose, originalDirectory) {
118
120
return ;
119
121
}
120
122
121
- checkNodeVersion ( ) ;
123
+ checkNodeVersion ( packageName ) ;
122
124
123
125
var scriptsPath = path . resolve (
124
126
process . cwd ( ) ,
125
127
'node_modules' ,
126
- 'react-scripts' ,
128
+ packageName ,
127
129
'scripts' ,
128
130
'init.js'
129
131
) ;
@@ -144,11 +146,21 @@ function getInstallPackage(version) {
144
146
return packageToInstall ;
145
147
}
146
148
147
- function checkNodeVersion ( ) {
149
+ // Extract package name from tarball url or path.
150
+ function getPackageName ( installPackage ) {
151
+ if ( ~ installPackage . indexOf ( '.tgz' ) ) {
152
+ return installPackage . match ( / ^ .+ \/ ( .+ ) - .+ \. t g z $ / ) [ 1 ] ;
153
+ } else if ( ~ installPackage . indexOf ( '@' ) ) {
154
+ return installPackage . split ( '@' ) [ 0 ] ;
155
+ }
156
+ return installPackage ;
157
+ }
158
+
159
+ function checkNodeVersion ( packageName ) {
148
160
var packageJsonPath = path . resolve (
149
161
process . cwd ( ) ,
150
162
'node_modules' ,
151
- 'react-scripts' ,
163
+ packageName ,
152
164
'package.json'
153
165
) ;
154
166
var packageJson = require ( packageJsonPath ) ;
0 commit comments