From 649f18d3040efeb9c560269bee0b92189dc0d2a0 Mon Sep 17 00:00:00 2001 From: Joshua Chen Date: Thu, 16 Dec 2021 01:03:38 +0800 Subject: [PATCH] fix(create-docusaurus): give a clearer message when installation failed (#6095) --- packages/create-docusaurus/src/index.ts | 43 +++++++++++++------------ 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/packages/create-docusaurus/src/index.ts b/packages/create-docusaurus/src/index.ts index 55da5f84c3..c7bb9cd57a 100755 --- a/packages/create-docusaurus/src/index.ts +++ b/packages/create-docusaurus/src/index.ts @@ -269,32 +269,33 @@ ${chalk.cyan('Creating new Docusaurus project...')} } const pkgManager = useYarn ? 'yarn' : 'npm'; - if (!cliOptions.skipInstall) { - console.log(`Installing dependencies with ${chalk.cyan(pkgManager)}...`); - - try { - // Use force coloring the output, since the command is invoked by shelljs, which is not the interactive shell - shell.exec( - `cd "${name}" && ${useYarn ? 'yarn' : 'npm install --color always'}`, - { - env: { - ...process.env, - ...(supportsColor.stdout ? {FORCE_COLOR: '1'} : {}), - }, - }, - ); - } catch (err) { - console.log(chalk.red('Installation failed.')); - throw err; - } - } - console.log(); - // Display the most elegant way to cd. const cdpath = path.join(process.cwd(), name) === dest ? name : path.relative(process.cwd(), name); + if (!cliOptions.skipInstall) { + console.log(`Installing dependencies with ${chalk.cyan(pkgManager)}...`); + if ( + shell.exec( + `cd "${name}" && ${useYarn ? 'yarn' : 'npm install --color always'}`, + { + env: { + ...process.env, + // Force coloring the output, since the command is invoked by shelljs, which is not the interactive shell + ...(supportsColor.stdout ? {FORCE_COLOR: '1'} : {}), + }, + }, + ).code !== 0 + ) { + console.error(chalk.red('Dependency installation failed.')); + console.log(`The site directory has already been created, and you can retry by typing: + + ${chalk.cyan('cd')} ${cdpath} + ${chalk.cyan(`${pkgManager} install`)}`); + process.exit(0); + } + } console.log(` Successfully created "${chalk.cyan(cdpath)}".