johnagan / clean-webpack-plugin

A webpack plugin to remove your build folder(s) before building
MIT License
1.96k stars 135 forks source link

Files are not removed when there is an error in the build #169

Open tobia opened 4 years ago

tobia commented 4 years ago

The plugin does nothing (does not remove the old files) when there is an error in the build. I think this is a bug.

Steps to reproduce:

  1. Use the following minimal webpack.config.js:
    const { CleanWebpackPlugin } = require('clean-webpack-plugin');
    module.exports = {
    output: { filename: '[name].[contenthash].js' },
    plugins: [ new CleanWebpackPlugin() ]
    };
  2. Create a minimal src/index.js with no errors.
  3. Launch webpack in watch mode: the dist folder is populated with only one main.*.js file.
  4. Change src/index.js introducing a syntax error.

*Result: the dist folder now has two `main..js` files.**

Expected result: the old file is cleaned an only the newest version remains.

Workaround

Remove the following lines from the plugin source code:

    /**
     * Do nothing if there is a webpack error
     */
    if (stats.hasErrors()) {
      if (this.verbose) {
        // eslint-disable-next-line no-console
        console.warn('clean-webpack-plugin: pausing due to webpack errors');
      }

      return;
    }
toshihidetagami commented 4 years ago

Isn't this expected behavior from v3?

https://github.com/johnagan/clean-webpack-plugin/releases https://github.com/johnagan/clean-webpack-plugin/pull/134

Julien-prrs commented 4 years ago

Preventing file deletion can be useful in some cases. However, I think that we should have an option to enable/disable this feature. Because in some case this is more annoying than useful.