javascript - Webpack中如何根据命令行参数启用插件?

标签 javascript node.js webpack

以下是我的 webpack.config.js 的插件属性:

plugins: [
    new webpack.ProvidePlugin({
        $: 'jquery',
        jQuery: 'jquery'
    }),
    new webpack.optimize.OccurenceOrderPlugin(),
    new webpack.DefinePlugin({
        'process.env': {
            'NODE_ENV': JSON.stringify('production'),
        }
    }),
    new webpack.optimize.UglifyJsPlugin({
        compressor: {
            warnings: false
        }
    }),
    new CompressionPlugin({
        asset: '{file}',
        algorithm: 'gzip',
        regExp: /\.js$|\.html$/,
    })
],

有时我想禁用 CompressionPlugin 而有时我想启用它。但是,创建两个 webpack 配置文件看起来很笨拙。我想知道是否有一种方法可以通过使用命令行参数动态启用/禁用插件?

例如,如果我可以使用 webpack --disable-compression-plugin 来禁用 CompressionPlugin,那就太好了。有人对此有任何想法吗?

最佳答案

尝试使用 yargs npm 模块来执行此操作:

npm install yargs --save-dev

webpack.config.js 中:

var webpack = require('webpack');
var yargs  = require("yargs");
...

var argv = yargs
    .boolean("disable-compression-plugin")
    .argv;
...

// use argv.disableCompressionPlugin to check the option

module.exports = {
    ...
    plugins: (function(argv) { 
        var plugins = [
            new webpack.ProvidePlugin({
                $: 'jquery',
                jQuery: 'jquery'
            }),
            new webpack.optimize.OccurenceOrderPlugin(),
            new webpack.DefinePlugin({
                'process.env': {
                    'NODE_ENV': JSON.stringify('production'),
                }
            }),
            new webpack.optimize.UglifyJsPlugin({
                compressor: {
                    warnings: false
                }
            })
        ];


        // HERE IS OPTION CONDITION
        if (argv.disableCompressionPlugin) {
            plugins.push(new CompressionPlugin({
                asset: '{file}',
                algorithm: 'gzip',
                regExp: /\.js$|\.html$/,
            }));
        }

        return plugins;
    })(argv),
    ...
};

关于javascript - Webpack中如何根据命令行参数启用插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35033722/

相关文章:

javascript - Webpack-dev-server 不会在更改时构建文件

javascript - 从 JSP 调用 EXTJS 方法时未捕获的类型错误和 Uncaught ReferenceError

javascript - Jquery表编辑行取消按钮无法正常工作

node.js - headless Chrome 屏幕截图的最大高度为 16,384 像素?

mysql - 正确显示MySQL日期

javascript - Webpack 提取文本插件输出 .js 和 .css 文件用于样式条目

javascript - 用于恢复损坏的 pdf 表单内容的脚本

javascript - 最小公倍数代码在一个数组上产生错误的答案

node.js - 如何在node.js中使用ejs使用特定文件夹中的每个图像?

javascript - Webpack 类型错误 'TypeError [ERR_INVALID_ARG_TYPE]: The "路径”参数必须是字符串类型。接收到的 bool 类型 (true)'