Skip to content

Commit

Permalink
fix: show warning if bail and watch are used together (#1804)
Browse files Browse the repository at this point in the history
* fix: show warning if bail and watch are used together

* fix: watch

* tests: update

* chore: add comments

Co-authored-by: James George <jamesgeorge998001@gmail.com>
  • Loading branch information
snitin315 and jamesgeorge007 committed Sep 21, 2020
1 parent 4014808 commit 6140b24
Show file tree
Hide file tree
Showing 9 changed files with 79 additions and 0 deletions.
3 changes: 3 additions & 0 deletions packages/webpack-cli/lib/groups/BasicGroup.js
Expand Up @@ -36,6 +36,9 @@ class BasicGroup extends GroupHelper {
if (arg === 'name') {
options.name = args[arg];
}
if (arg === 'watch') {
options.watch = true;
}
if (arg === 'entry') {
options[arg] = this.resolveFilePath(args[arg], 'index.js');
if (options[arg].length === 0) {
Expand Down
3 changes: 3 additions & 0 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 @@ -119,9 +120,11 @@ class Compiler {

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
14 changes: 14 additions & 0 deletions packages/webpack-cli/lib/utils/warnings/bailAndWatchWarning.js
@@ -0,0 +1,14 @@
const logger = require('../logger');

/**
* warn the user if bail and watch both are used together
* @param {Object} webpack compiler
* @returns {void}
*/
const bailAndWatchWarning = (compiler) => {
if (compiler.options.bail && compiler.options.watch) {
logger.warn('You are using "bail" with "watch". "bail" will still exit webpack when the first error is found.');
}
};

module.exports = bailAndWatchWarning;
26 changes: 26 additions & 0 deletions test/bail/bail-and-watch-warning.test.js
@@ -0,0 +1,26 @@
'use strict';

const { run } = require('../utils/test-utils');

describe('bail and watch warning', () => {
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();
});

it('should log not log warning if both are not true', () => {
const { stderr, stdout } = run(__dirname, ['-c', 'third-webpack.config.js']);

expect(stderr).not.toContain(`You are using "bail" with "watch". "bail" will still exit webpack when the first error is found.`);
expect(stdout).toBeTruthy();
});
});
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,
},
];
6 changes: 6 additions & 0 deletions test/bail/single-webpack.config.js
@@ -0,0 +1,6 @@
module.exports = {
entry: './src/first.js',
mode: 'development',
bail: true,
watch: true,
};
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');
5 changes: 5 additions & 0 deletions test/bail/third-webpack.config.js
@@ -0,0 +1,5 @@
module.exports = {
entry: './src/first.js',
mode: 'development',
bail: true,
};

0 comments on commit 6140b24

Please sign in to comment.