webpack 配置如何根据环境更改插件

Fel*_*lix 5 javascript node.js webpack

嗨,是否可以根据环境在 webpack 配置中制作插件?

plugins: [
        new webpack.HotModuleReplacementPlugin(),
        new webpack.NamedModulesPlugin(),
        new webpack.LoaderOptionsPlugin({
            debug: true
        }),
        new CopyWebpackPlugin([
            {from: 'src/www/'}
        ])
        // new BundleAnalyzerPlugin(),
        // new CompressionPlugin({
        //     algorithm: 'gzip',
        //     test: /\.js$|\.css$|\.html$/
        // }),
        // new UglifyJsPlugin({
        //     test: /\.js(\?.*)?$/i
        // })
    ]
Run Code Online (Sandbox Code Playgroud)

仅当我将其捆绑在一起时才应使用注释的 NODE_ENV=production

提前致谢

小智 9

根据您的要求,如果 env 是生产,则添加插件,否则返回 false,并根据布尔值过滤数组,但首选方法是为不同的 env 创建不同的文件,这将是更简洁的方法。

plugins: [
    new webpack.HotModuleReplacementPlugin(),
        new webpack.NamedModulesPlugin(),
        new webpack.LoaderOptionsPlugin({
            debug: true
        }),
        new CopyWebpackPlugin([
            {from: 'src/www/'}
        ])
        NODE_ENV==='production' ? new BundleAnalyzerPlugin() : false,
        NODE_ENV==='production' ? new CompressionPlugin({
             algorithm: 'gzip',
             test: /\.js$|\.css$|\.html$/
        }) : false,
        NODE_ENV==='production' ?  new UglifyJsPlugin({
             test: /\.js(\?.*)?$/i
        }) : false
 ].filter(Boolean)
Run Code Online (Sandbox Code Playgroud)