diff --git a/bin/webpack.js b/bin/webpack.js index 66250395742..a7209749183 100755 --- a/bin/webpack.js +++ b/bin/webpack.js @@ -50,6 +50,7 @@ const isInstalled = packageName => { * @property {string} binName name of the executable file * @property {string} alias shortcut for choice * @property {boolean} installed currently installed? + * @property {boolean} recommended is recommended * @property {string} url homepage * @property {string} description description */ @@ -62,6 +63,7 @@ const CLIs = [ binName: "webpack-cli", alias: "cli", installed: isInstalled("webpack-cli"), + recommended: true, url: "https://github.com/webpack/webpack-cli", description: "The original webpack full-featured CLI." }, @@ -71,6 +73,7 @@ const CLIs = [ binName: "webpack-command", alias: "command", installed: isInstalled("webpack-command"), + recommended: false, url: "https://github.com/webpack-contrib/webpack-command", description: "A lightweight, opinionated webpack CLI." } @@ -87,7 +90,9 @@ if (installedClis.length === 0) { "One CLI for webpack must be installed. These are recommended choices, delivered as separate packages:"; for (const item of CLIs) { - notify += `\n - ${item.name} (${item.url})\n ${item.description}`; + if (item.recommended) { + notify += `\n - ${item.name} (${item.url})\n ${item.description}`; + } } console.error(notify); @@ -103,9 +108,7 @@ if (installedClis.length === 0) { )}".` ); - let question = `Which one do you like to install (${CLIs.map( - item => item.name - ).join("/")}):\n`; + let question = `Do you want to install 'webpack-cli' (yes/no): `; const questionInterface = readLine.createInterface({ input: process.stdin, @@ -114,35 +117,22 @@ if (installedClis.length === 0) { questionInterface.question(question, answer => { questionInterface.close(); - const normalizedAnswer = answer.toLowerCase(); - const selectedPackage = CLIs.find(item => { - return item.name === normalizedAnswer || item.alias === normalizedAnswer; - }); + const normalizedAnswer = answer.toLowerCase().startsWith("y"); if (!normalizedAnswer) { console.error( - "One CLI needs to be installed alongside webpack to use the CLI." - ); - process.exitCode = 1; - - return; - } else if (!selectedPackage) { - console.error( - "No matching choice.\n" + - "One CLI needs to be installed alongside webpack to use the CLI.\n" + - "Try to installing your CLI of choice manually." + "You need to install 'webpack-cli' to use webpack via CLI.\n" + + "You can also install the CLI manually." ); process.exitCode = 1; return; } - const packageName = selectedPackage.package; + const packageName = "webpack-cli"; console.log( - `Installing '${ - selectedPackage.name - }' (running '${packageManager} ${installOptions.join( + `Installing '${packageName}' (running '${packageManager} ${installOptions.join( " " )} ${packageName}')...` );