DefinePlugin插件

这个插件允许你创建全局常量用于编译时解析。如果设置mode:"production",webpack默认会设置"process.env.NODE_ENV": JSON.stringify("production")。

// webpack.config.js

module.exports = {
    mode: "production",
    // using mode: "production" attaches the following configuration:
    plugins: [
        new webpack.DefinePlugin({
            "process.env.NODE_ENV": JSON.stringify("production")
        }),
    ]
}

注意因为直接文本替换,所给的属性值必须包括引号,要这么做JSON.stringify("production")或'"production"'(注意:有单引号包裹)。

在编译时解析意味着你在代码中使用的process.env.NODE_ENV,将被替换成production这个值。

console.log(process.env.NODE_ENV);
if(process.env.NODE_ENV === 'production') {
    console.log('this is production!')
}

记住,在webpack编译完代码之后就没有process.env.NODE_ENV这个常量值了。上面的代码在webpack处理之后变成下面的样子:

console.log("production");
if(true) {
    console.log("this is production!")
}

在UglifyJSPlugin插件最小化处理之后,它更是简化为:

console.log("production");
console.log("this is production!")
原文地址:https://www.cnblogs.com/cag2050/p/10077637.html