From d8b65295a6acf85f2ab6ec571af0be0939cd3335 Mon Sep 17 00:00:00 2001
From: Marek Suscak <marek.suscak@gmail.com>
Date: Mon, 12 Sep 2016 00:53:56 +0200
Subject: [PATCH] Check the app name before proceeding. (#628)

* Check the app name before proceeding.

* Refactor.

* Use arrow function and template string.

* Remove comment.

* Rephrase the error.

* Add missing semicolons.
---
 global-cli/index.js | 28 +++++++++++++++++++++++++++-
 1 file changed, 27 insertions(+), 1 deletion(-)

diff --git a/global-cli/index.js b/global-cli/index.js
index 3c646e37e..3fc6315e7 100644
--- a/global-cli/index.js
+++ b/global-cli/index.js
@@ -69,6 +69,10 @@ createApp(commands[0], argv.verbose, argv['scripts-version']);
 
 function createApp(name, verbose, version) {
   var root = path.resolve(name);
+  var appName = path.basename(root);
+
+  checkAppName(appName);
+
   if (!pathExists.sync(name)) {
     fs.mkdirSync(root);
   } else if (!isSafeToCreateProjectIn(root)) {
@@ -76,7 +80,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 +170,29 @@ 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();
+
+  if (allDependencies.indexOf(appName) >= 0) {
+    console.error(
+      chalk.red(
+        `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')
+      )
+    );
+    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
-- 
GitLab