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.
This commit is contained in:
Marek Suscak
2016-09-12 00:53:56 +02:00
committed by Ville Immonen
parent 55f965aa5d
commit d8b65295a6

View File

@@ -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, its 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