webpack merge definePlugin process.env.NODE_ENV undefined

时间:2017-09-28 14:43:09

标签: webpack

我正在使用webpack-merge和不同的webpack.config文件。 我试图传递node_env(或任何其他变量);

如何从webpack.common.js文件中访问进程env变量?

这是webpack.prd.config.js文件:

const merge = require("webpack-merge");
const common = require("./webpack.common.js");
const webpack = require("webpack");

module.exports = merge(common, {
    plugins: [
        new webpack.DefinePlugin({
            "process.env": {
                "NODE_ENV": JSON.stringify("production")
            }
        })
    ]
});

这是webpack.common.js文件:

console.log("Environment: " + process.env.NODE_ENV);

module.exports = {
    entry: {
    ...

'process.env.NODE_ENV'变量始终未定义。

2 个答案:

答案 0 :(得分:3)

我刚刚意识到webpack -p没有将process.env.NODE_ENV的值发送到webapck.conf.js

我通过

来解决这个问题
"scripts": {
    "prod": "set NODE_ENV=production && webpack -p",
  },

只需确保当您尝试比较它们时,只需在生产结束时添加空间

var isProd = process.env.NODE_ENV === "production ";

答案 1 :(得分:1)

DefinePlugin只在代码中添加一个全局对象(发送给webpack的内容)而不是webpack的配置。

因此,如果您想在webpack配置中NODE_ENV,则必须先将其导出:

export NODE_ENV=production
webpack ....

NODE_ENV=production webpack ...