stephencookdev / speed-measure-webpack-plugin

⏱ See how fast (or not) your plugins and loaders are, so you can optimise your builds
MIT License
2.42k stars 79 forks source link

Webpack5 , optimization minimizer defaults build error #170

Open huijiewei opened 3 years ago

huijiewei commented 3 years ago

https://webpack.js.org/configuration/optimization/

'...' can be used in optimization.minimizer to access the defaults.

so

when i use minimizer: [new CssMinimizerPlugin(), '...'],

build get error TypeError: Cannot create proxy with a non-object as target or handler

jasel-lewis commented 5 months ago

In the event this helps someone in the future...

I encountered this because I followed webpack's guidance on conditionally including plugins:

// ...
const SpeedMeasurePlugin = require('speed-measure-webpack-plugin');
const smp = new SpeedMeasurePlugin();

module.exports = (env, argv) => {
    // ...
    return smp.wrap({
        entry: {
            // ...
        },
        // ...
        plugins: [
            isDev && new CopyModulesPlugin({
                // ...
            }),
            new webpack.DefinePlugin({
                // ...
            }),
            // ...
        ],
        // ...
    });
};

It was the conditional isDev && ... that was causing this error. Instead, I programmatically created my array of plugins and assigning this to my webpack config:

// ...
const SpeedMeasurePlugin = require('speed-measure-webpack-plugin');
const smp = new SpeedMeasurePlugin();
const plugins = [];

if (isDev) {
    plugins.push(new CopyModulesPlugin({
        // ...
    });
}

plugins.push(new webpack.DefinePlugin({
    // ...
});

module.exports = (env, argv) => {
    // ...
    return smp.wrap({
        entry: {
            // ...
        },
        // ...
        plugins,
        // ...
    });
};