Skip to content

Commit 2dd105d

Browse files
yesmeckgaearon
authored andcommitted
Make --scripts-version work with forked react-scripts (#632)
1 parent f8b4726 commit 2dd105d

File tree

1 file changed

+17
-5
lines changed

1 file changed

+17
-5
lines changed

Diff for: global-cli/index.js

+17-5
Original file line numberDiff line numberDiff line change
@@ -104,12 +104,14 @@ function createApp(name, verbose, version) {
104104
}
105105

106106
function run(root, appName, version, verbose, originalDirectory) {
107+
var installPackage = getInstallPackage(version);
108+
var packageName = getPackageName(installPackage);
107109
var args = [
108110
'install',
109111
verbose && '--verbose',
110112
'--save-dev',
111113
'--save-exact',
112-
getInstallPackage(version),
114+
installPackage,
113115
].filter(function(e) { return e; });
114116
var proc = spawn('npm', args, {stdio: 'inherit'});
115117
proc.on('close', function (code) {
@@ -118,12 +120,12 @@ function run(root, appName, version, verbose, originalDirectory) {
118120
return;
119121
}
120122

121-
checkNodeVersion();
123+
checkNodeVersion(packageName);
122124

123125
var scriptsPath = path.resolve(
124126
process.cwd(),
125127
'node_modules',
126-
'react-scripts',
128+
packageName,
127129
'scripts',
128130
'init.js'
129131
);
@@ -144,11 +146,21 @@ function getInstallPackage(version) {
144146
return packageToInstall;
145147
}
146148

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(/^.+\/(.+)-.+\.tgz$/)[1];
153+
} else if (~installPackage.indexOf('@')) {
154+
return installPackage.split('@')[0];
155+
}
156+
return installPackage;
157+
}
158+
159+
function checkNodeVersion(packageName) {
148160
var packageJsonPath = path.resolve(
149161
process.cwd(),
150162
'node_modules',
151-
'react-scripts',
163+
packageName,
152164
'package.json'
153165
);
154166
var packageJson = require(packageJsonPath);

0 commit comments

Comments
 (0)