ztoben / assets-webpack-plugin

Webpack plugin that emits a json file with assets paths
https://www.npmjs.com/package/assets-webpack-plugin
MIT License
958 stars 104 forks source link

`webpack-assets.json` gets removed if `output.clean` webpack option is enabled #404

Open Den-dp opened 3 years ago

Den-dp commented 3 years ago

Describe the bug webpack-assets.json gets removed if the new output.clean webpack@5 option is used.

To Reproduce Steps to reproduce the behavior:

npm init -y
npm i webpack assets-webpack-plugin webpack-cli -D
npx webpack --mode production

Expected behavior webpack-assets.json file should be present in the output folder even if webpack configured with clean: true.

Webpack Config

const AssetsPlugin = require('assets-webpack-plugin');
const path = require('path');

module.exports = {
    output: {
        path: path.resolve(__dirname, 'dist'),
        clean: true
    },
    plugins: [
        new AssetsPlugin({
            useCompilerPath: true,
        })
    ]
};

Desktop (please complete the following information):

Additional context I found that this is a regression that was introduced in 7.1.0 after fixing #327 via #392 Works fine if downgraded to the 7.0.0

npm i assets-webpack-plugin@7.0.0 -D
npx webpack --mode production
geldmacher commented 3 years ago

I can confirm this.

A hotfix for this is:

const AssetsPlugin = require('assets-webpack-plugin');
const path = require('path');

module.exports = {
    output: {
        path: path.resolve(__dirname, 'dist'),
        clean: {
            keep: /webpack-assets\.json/
        }
    },
    plugins: [
        new AssetsPlugin({
            useCompilerPath: true,
        })
    ]
};