diff --git a/packages/webpack-cli/lib/utils/Compiler.js b/packages/webpack-cli/lib/utils/Compiler.js index a54ef851325..7b34f078b28 100644 --- a/packages/webpack-cli/lib/utils/Compiler.js +++ b/packages/webpack-cli/lib/utils/Compiler.js @@ -1,5 +1,6 @@ const webpack = require('webpack'); const logger = require('./logger'); +const bailAndWatchWarning = require('./warnings/bailAndWatchWarning'); const { CompilerOutput } = require('./CompilerOutput'); class Compiler { @@ -117,16 +118,13 @@ class Compiler { return interactive(options, outputOptions); } - //warn the user if bail and watch both are used together - if (!this.compiler.compilers && this.compiler.options.bail && this.compiler.watch) { - logger.warn('You are using "bail" with "watch". "bail" will still exit webpack when the first error is found.'); - } - if (this.compiler.compilers) { this.compiler.compilers.forEach((comp, idx) => { + bailAndWatchWarning(comp); //warn the user if bail and watch both are used together this.setUpHookForCompilation(comp, outputOptions, options[idx]); }); } else { + bailAndWatchWarning(this.compiler); this.setUpHookForCompilation(this.compiler, outputOptions, options); } diff --git a/packages/webpack-cli/lib/utils/warnings/bailAndWatchWarning.js b/packages/webpack-cli/lib/utils/warnings/bailAndWatchWarning.js new file mode 100644 index 00000000000..492f5b4f15e --- /dev/null +++ b/packages/webpack-cli/lib/utils/warnings/bailAndWatchWarning.js @@ -0,0 +1,7 @@ +const logger = require('../logger'); + +module.exports = (compiler) => { + if (compiler.options.bail && compiler.watch) { + logger.warn('You are using "bail" with "watch". "bail" will still exit webpack when the first error is found.'); + } +}; diff --git a/test/bail/bail-and-watch-warning.test.js b/test/bail/bail-and-watch-warning.test.js index 9700436421d..007f7ed2cdd 100644 --- a/test/bail/bail-and-watch-warning.test.js +++ b/test/bail/bail-and-watch-warning.test.js @@ -3,8 +3,15 @@ const { run } = require('../utils/test-utils'); describe('bail and watch warning', () => { - it('should log warning if bail and watch both options are true', () => { - const { stderr, stdout } = run(__dirname, ['-c', 'webpack.config.js']); + it('should log warning in case of single compiler', () => { + const { stderr, stdout } = run(__dirname, ['-c', 'single-webpack.config.js']); + + expect(stderr).toContain(`You are using "bail" with "watch". "bail" will still exit webpack when the first error is found.`); + expect(stdout).toBeTruthy(); + }); + + it('should log warning in case of multiple compilers', () => { + const { stderr, stdout } = run(__dirname, ['-c', 'multi-webpack.config.js']); expect(stderr).toContain(`You are using "bail" with "watch". "bail" will still exit webpack when the first error is found.`); expect(stdout).toBeTruthy(); diff --git a/test/bail/main.js b/test/bail/main.js deleted file mode 100644 index 15e0a061dc2..00000000000 --- a/test/bail/main.js +++ /dev/null @@ -1 +0,0 @@ -console.log('bail and watch warning test'); diff --git a/test/bail/multi-webpack.config.js b/test/bail/multi-webpack.config.js new file mode 100644 index 00000000000..497c9ff6162 --- /dev/null +++ b/test/bail/multi-webpack.config.js @@ -0,0 +1,20 @@ +module.exports = [ + { + output: { + filename: './dist-first.js', + }, + name: 'first', + entry: './src/first.js', + mode: 'development', + }, + { + output: { + filename: './dist-second.js', + }, + name: 'second', + entry: './src/second.js', + mode: 'production', + bail: true, + watch: true, + }, +]; diff --git a/test/bail/webpack.config.js b/test/bail/single-webpack.config.js similarity index 73% rename from test/bail/webpack.config.js rename to test/bail/single-webpack.config.js index e066755baef..132930c4f13 100644 --- a/test/bail/webpack.config.js +++ b/test/bail/single-webpack.config.js @@ -1,5 +1,5 @@ module.exports = { - entry: './main.js', + entry: './src/first.js', mode: 'development', bail: true, watch: true, diff --git a/test/bail/src/first.js b/test/bail/src/first.js new file mode 100644 index 00000000000..fb7e56835c4 --- /dev/null +++ b/test/bail/src/first.js @@ -0,0 +1 @@ +console.log('bail and watch warning test first'); diff --git a/test/bail/src/second.js b/test/bail/src/second.js new file mode 100644 index 00000000000..5b277372189 --- /dev/null +++ b/test/bail/src/second.js @@ -0,0 +1 @@ +console.log('bail and watch warning test second');