From c140012382aff263f42d79163221f26f9b1da034 Mon Sep 17 00:00:00 2001 From: Enoah Netzach Date: Sun, 11 Dec 2016 14:07:53 +0100 Subject: [PATCH] Remove code duplication --- packages/create-react-app/index.js | 60 +++++++++++++++--------------- 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/packages/create-react-app/index.js b/packages/create-react-app/index.js index 4dbb37f4969..63c9bdbacfb 100644 --- a/packages/create-react-app/index.js +++ b/packages/create-react-app/index.js @@ -39,6 +39,30 @@ 'use strict'; var chalk = require('chalk'); +var path = require('path'); +var semver = require('semver'); + +function checkNodeVersion(packageJsonPath) { + var packageJson = require(packageJsonPath); + if (!packageJson.engines || !packageJson.engines.node) { + return; + } + + if (!semver.satisfies(process.version, packageJson.engines.node)) { + console.error( + chalk.red( + 'You are running Node %s.\n' + + 'Create React App requires Node %s or higher. \n' + + 'Please update your version of Node.' + ), + process.version, + packageJson.engines.node + ); + process.exit(1); + } +} + +checkNodeVersion(path.resolve(__dirname, 'package.json')); var currentNodeVersion = process.versions.node if (currentNodeVersion.split('.')[0] < 4) { @@ -54,10 +78,8 @@ if (currentNodeVersion.split('.')[0] < 4) { var commander = require('commander'); var fs = require('fs-extra'); -var path = require('path'); var execSync = require('child_process').execSync; var spawn = require('cross-spawn'); -var semver = require('semver'); var projectName; @@ -180,7 +202,13 @@ function run(root, appName, version, verbose, originalDirectory, template) { process.exit(1); } - checkNodeVersion(packageName); + var packageJsonPath = path.resolve( + process.cwd(), + 'node_modules', + packageName, + 'package.json' + ); + checkNodeVersion(packageJsonPath); var scriptsPath = path.resolve( process.cwd(), @@ -219,32 +247,6 @@ function getPackageName(installPackage) { return installPackage; } -function checkNodeVersion(packageName) { - var packageJsonPath = path.resolve( - process.cwd(), - 'node_modules', - packageName, - 'package.json' - ); - var packageJson = require(packageJsonPath); - if (!packageJson.engines || !packageJson.engines.node) { - return; - } - - if (!semver.satisfies(process.version, packageJson.engines.node)) { - console.error( - chalk.red( - 'You are running Node %s.\n' + - 'Create React App requires Node %s or higher. \n' + - 'Please update your version of Node.' - ), - process.version, - packageJson.engines.node - ); - process.exit(1); - } -} - function checkAppName(appName) { // TODO: there should be a single place that holds the dependencies var dependencies = ['react', 'react-dom'];