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';