Skip to content

Commit 864fdd1

Browse files
author
Felix Oghină
committed
Merge pull request #3580 from exponentjs/cli-version-check
[CLI] Make `react-native init` check your Node version
2 parents 7e53ee1 + 64c8093 commit 864fdd1

2 files changed

Lines changed: 31 additions & 1 deletion

File tree

react-native-cli/index.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@ var fs = require('fs');
3939
var path = require('path');
4040
var exec = require('child_process').exec;
4141
var spawn = require('child_process').spawn;
42+
var chalk = require('chalk');
4243
var prompt = require('prompt');
44+
var semver = require('semver');
4345

4446
var CLI_MODULE_PATH = function() {
4547
return path.resolve(
@@ -50,6 +52,15 @@ var CLI_MODULE_PATH = function() {
5052
);
5153
};
5254

55+
var REACT_NATIVE_PACKAGE_JSON_PATH = function() {
56+
return path.resolve(
57+
process.cwd(),
58+
'node_modules',
59+
'react-native',
60+
'package.json'
61+
);
62+
};
63+
5364
checkForVersionArgument();
5465

5566
var cli;
@@ -185,6 +196,8 @@ function run(root, projectName) {
185196
process.exit(1);
186197
}
187198

199+
checkNodeVersion();
200+
188201
var cli = require(CLI_MODULE_PATH());
189202
cli.init(root, projectName);
190203
});
@@ -203,6 +216,21 @@ function runVerbose(root, projectName) {
203216
});
204217
}
205218

219+
function checkNodeVersion() {
220+
var packageJson = require(REACT_NATIVE_PACKAGE_JSON_PATH());
221+
if (!packageJson.engines || !packageJson.engines.node) {
222+
return;
223+
}
224+
if (!semver.satisfies(process.version, packageJson.engines.node)) {
225+
console.error(chalk.red(
226+
'You are currently running Node %s but React Native requires %s. ' +
227+
'Please use a supported version of Node.'
228+
),
229+
process.version,
230+
packageJson.engines.node);
231+
}
232+
}
233+
206234
function checkForVersionArgument() {
207235
if (process.argv.indexOf('-v') >= 0 || process.argv.indexOf('--version') >= 0) {
208236
var pjson = require('./package.json');

react-native-cli/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
"react-native": "index.js"
1414
},
1515
"dependencies": {
16-
"prompt": "^0.2.14"
16+
"chalk": "^1.1.1",
17+
"prompt": "^0.2.14",
18+
"semver": "^5.0.3"
1719
}
1820
}

0 commit comments

Comments
 (0)