From 01b57c9d0a77bec84af844935df6699ec1cdbffb Mon Sep 17 00:00:00 2001 From: Marek Suscak Date: Sun, 11 Sep 2016 17:40:48 +0200 Subject: [PATCH 1/6] Check the app name before proceeding. --- global-cli/index.js | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/global-cli/index.js b/global-cli/index.js index 3c646e37e3..b2a2f2bbbb 100644 --- a/global-cli/index.js +++ b/global-cli/index.js @@ -69,6 +69,11 @@ createApp(commands[0], argv.verbose, argv['scripts-version']); function createApp(name, verbose, version) { var root = path.resolve(name); + var appName = path.basename(root); + + // NPM is whining about installing packages with names equal to appName. + checkAppName(appName); + if (!pathExists.sync(name)) { fs.mkdirSync(root); } else if (!isSafeToCreateProjectIn(root)) { @@ -76,7 +81,6 @@ function createApp(name, verbose, version) { process.exit(1); } - var appName = path.basename(root); console.log( 'Creating a new React app in ' + root + '.' ); @@ -167,6 +171,26 @@ function checkNodeVersion() { } } +function checkAppName(appName) { + // TODO: there should be a single place that holds the dependencies + var allDeps = ['react-scripts', 'react', 'react-dom'] + + if (allDeps.indexOf(appName) >= 0) { + console.error( + chalk.red( + 'The name of your app ' + chalk.red.bold('MUST NOT') + ' match any of the following:\n\n' + + + chalk.cyan( + ' react\n' + + ' react-dom\n' + + ' react-scripts\n' + ) + ) + ); + process.exit(1); + } +} + // If project only contains files generated by GH, it’s safe. // We also special case IJ-based products .idea because it integrates with CRA: // https://github.com/facebookincubator/create-react-app/pull/368#issuecomment-243446094 From 8aaa612e8ed78a3900e39ae797dd414c4371a6a2 Mon Sep 17 00:00:00 2001 From: Marek Suscak Date: Sun, 11 Sep 2016 17:45:42 +0200 Subject: [PATCH 2/6] Refactor. --- global-cli/index.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/global-cli/index.js b/global-cli/index.js index b2a2f2bbbb..20d53a8f49 100644 --- a/global-cli/index.js +++ b/global-cli/index.js @@ -173,17 +173,19 @@ function checkNodeVersion() { function checkAppName(appName) { // TODO: there should be a single place that holds the dependencies - var allDeps = ['react-scripts', 'react', 'react-dom'] + var dependencies = ['react', 'react-dom'] + var devDependencies = ['react-scripts'] + var allDependencies = dependencies.concat(devDependencies).sort() - if (allDeps.indexOf(appName) >= 0) { + if (allDependencies.indexOf(appName) >= 0) { console.error( chalk.red( 'The name of your app ' + chalk.red.bold('MUST NOT') + ' match any of the following:\n\n' + chalk.cyan( - ' react\n' + - ' react-dom\n' + - ' react-scripts\n' + allDependencies.map(function(depName) { + return ' ' + depName; + }).join('\n') ) ) ); From 0669da898ebc5610b3b76980793cc51cfe8d140f Mon Sep 17 00:00:00 2001 From: Marek Suscak Date: Sun, 11 Sep 2016 17:48:44 +0200 Subject: [PATCH 3/6] Use arrow function and template string. --- global-cli/index.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/global-cli/index.js b/global-cli/index.js index 20d53a8f49..9ae5977548 100644 --- a/global-cli/index.js +++ b/global-cli/index.js @@ -183,9 +183,7 @@ function checkAppName(appName) { 'The name of your app ' + chalk.red.bold('MUST NOT') + ' match any of the following:\n\n' + chalk.cyan( - allDependencies.map(function(depName) { - return ' ' + depName; - }).join('\n') + allDependencies.map(depName => ` ${depName}`).join('\n') ) ) ); From 03a0d8a74998771d362ae0db9f7af1913110ce4e Mon Sep 17 00:00:00 2001 From: Marek Suscak Date: Sun, 11 Sep 2016 18:19:02 +0200 Subject: [PATCH 4/6] Remove comment. --- global-cli/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/global-cli/index.js b/global-cli/index.js index 9ae5977548..c13747aa87 100644 --- a/global-cli/index.js +++ b/global-cli/index.js @@ -71,7 +71,6 @@ function createApp(name, verbose, version) { var root = path.resolve(name); var appName = path.basename(root); - // NPM is whining about installing packages with names equal to appName. checkAppName(appName); if (!pathExists.sync(name)) { From 8b4f5b1c60a5e3048e5bf1896c882e4a778a690b Mon Sep 17 00:00:00 2001 From: Marek Suscak Date: Mon, 12 Sep 2016 00:20:19 +0200 Subject: [PATCH 5/6] Rephrase the error. --- global-cli/index.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/global-cli/index.js b/global-cli/index.js index c13747aa87..1c8c303f1b 100644 --- a/global-cli/index.js +++ b/global-cli/index.js @@ -179,11 +179,14 @@ function checkAppName(appName) { if (allDependencies.indexOf(appName) >= 0) { console.error( chalk.red( - 'The name of your app ' + chalk.red.bold('MUST NOT') + ' match any of the following:\n\n' + + `Can't use "${appName}" as the app name because a dependency with the same name exists.\n\n` + + `Following names ${chalk.red.bold('must not')} be used:\n\n` + ) + + + - chalk.cyan( - allDependencies.map(depName => ` ${depName}`).join('\n') - ) + chalk.cyan( + allDependencies.map(depName => ` ${depName}`).join('\n') ) ); process.exit(1); From ddff5285ff2208c58642f1e724106637308e90d5 Mon Sep 17 00:00:00 2001 From: Marek Suscak Date: Mon, 12 Sep 2016 00:30:15 +0200 Subject: [PATCH 6/6] Add missing semicolons. --- global-cli/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/global-cli/index.js b/global-cli/index.js index 1c8c303f1b..3fc6315e77 100644 --- a/global-cli/index.js +++ b/global-cli/index.js @@ -172,9 +172,9 @@ function checkNodeVersion() { function checkAppName(appName) { // TODO: there should be a single place that holds the dependencies - var dependencies = ['react', 'react-dom'] - var devDependencies = ['react-scripts'] - var allDependencies = dependencies.concat(devDependencies).sort() + var dependencies = ['react', 'react-dom']; + var devDependencies = ['react-scripts']; + var allDependencies = dependencies.concat(devDependencies).sort(); if (allDependencies.indexOf(appName) >= 0) { console.error(