Skip to content

Commit

Permalink
fix: handle multi compilers
Browse files Browse the repository at this point in the history
  • Loading branch information
snitin315 committed Sep 18, 2020
1 parent 6021ee3 commit 1f54e89
Show file tree
Hide file tree
Showing 8 changed files with 42 additions and 9 deletions.
8 changes: 3 additions & 5 deletions 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 {
Expand Down Expand Up @@ -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);
}

Expand Down
@@ -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.');
}
};
11 changes: 9 additions & 2 deletions test/bail/bail-and-watch-warning.test.js
Expand Up @@ -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();
Expand Down
1 change: 0 additions & 1 deletion test/bail/main.js

This file was deleted.

20 changes: 20 additions & 0 deletions 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,
},
];
@@ -1,5 +1,5 @@
module.exports = {
entry: './main.js',
entry: './src/first.js',
mode: 'development',
bail: true,
watch: true,
Expand Down
1 change: 1 addition & 0 deletions test/bail/src/first.js
@@ -0,0 +1 @@
console.log('bail and watch warning test first');
1 change: 1 addition & 0 deletions test/bail/src/second.js
@@ -0,0 +1 @@
console.log('bail and watch warning test second');

0 comments on commit 1f54e89

Please sign in to comment.