我正在使用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'变量始终未定义。
答案 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 ...