From be509fac9a03e202e062229484bb10af7876968f Mon Sep 17 00:00:00 2001 From: Nitin Kumar Date: Fri, 25 Sep 2020 19:43:28 +0530 Subject: [PATCH] fix: check webpack installation before running cli (#1827) * fix: check webpack installation before running cli * chore: rephrase message * chore(package-utils): add webpack to peerDependenciesMeta * refactor: cli import * fix: lint * chore: use logger Co-authored-by: Rishabh Chawla --- packages/package-utils/package.json | 3 +++ packages/webpack-cli/bin/cli.js | 15 ++++++++++++--- packages/webpack-cli/lib/utils/Compiler.js | 3 ++- packages/webpack-cli/lib/utils/cli-flags.js | 3 ++- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/packages/package-utils/package.json b/packages/package-utils/package.json index 730aedfc282..da83a6f72b3 100644 --- a/packages/package-utils/package.json +++ b/packages/package-utils/package.json @@ -44,6 +44,9 @@ "@types/cross-spawn": "6.0.1" }, "peerDependenciesMeta": { + "webpack": { + "optional": true + }, "@webpack-cli/info": { "optional": true }, diff --git a/packages/webpack-cli/bin/cli.js b/packages/webpack-cli/bin/cli.js index 960fc1fad39..3cc31f043ec 100755 --- a/packages/webpack-cli/bin/cli.js +++ b/packages/webpack-cli/bin/cli.js @@ -4,6 +4,9 @@ require('v8-compile-cache'); const importLocal = require('import-local'); const runCLI = require('../lib/bootstrap'); +const { yellow } = require('colorette'); +const { error } = require('../lib/utils/logger'); +const { packageExists, promptInstallation } = require('@webpack-cli/package-utils'); // Prefer the local installation of webpack-cli if (importLocal(__filename)) { @@ -11,6 +14,12 @@ if (importLocal(__filename)) { } process.title = 'webpack'; -const [, , ...rawArgs] = process.argv; - -runCLI(rawArgs); +if (packageExists('webpack')) { + const [, , ...rawArgs] = process.argv; + runCLI(rawArgs); +} else { + promptInstallation('webpack', () => { + error(`It looks like ${yellow('webpack')} is not installed.`); + }); + return; +} diff --git a/packages/webpack-cli/lib/utils/Compiler.js b/packages/webpack-cli/lib/utils/Compiler.js index 7b34f078b28..7c18dd25e5a 100644 --- a/packages/webpack-cli/lib/utils/Compiler.js +++ b/packages/webpack-cli/lib/utils/Compiler.js @@ -1,4 +1,5 @@ -const webpack = require('webpack'); +const { packageExists } = require('@webpack-cli/package-utils'); +const webpack = packageExists('webpack') ? require('webpack') : undefined; const logger = require('./logger'); const bailAndWatchWarning = require('./warnings/bailAndWatchWarning'); const { CompilerOutput } = require('./CompilerOutput'); diff --git a/packages/webpack-cli/lib/utils/cli-flags.js b/packages/webpack-cli/lib/utils/cli-flags.js index edb1b1860c2..85f30cab7d8 100644 --- a/packages/webpack-cli/lib/utils/cli-flags.js +++ b/packages/webpack-cli/lib/utils/cli-flags.js @@ -1,4 +1,5 @@ -const { cli } = require('webpack'); +const { packageExists } = require('@webpack-cli/package-utils'); +const cli = packageExists('webpack') ? require('webpack').cli : undefined; const HELP_GROUP = 'help'; const BASIC_GROUP = 'basic';