https://api.***/ NODE_ENV="staging" =>-6ren">
gpt4 book ai didi

webpack - 我可以在 webpack 4 中使用模式为 ="staging"的 NODE_ENV ="production"吗?

转载 作者:行者123 更新时间:2023-12-04 07:16:12 26 4
gpt4 key购买 nike

我的应用程序使用 NODE_ENV 来决定应该请求哪个 api 服务器。

NODE_ENV="production" => https://api.***/
NODE_ENV="staging" => https://api.staging-***/
NODE_ENV="development" => http://localhost:3000/

我想用 mode="production"构建暂存包,但保留 NODE_ENV="staging"。

我尝试使用下面的配置进行构建,但是 bundle.js 变成了 NODE_ENV="production"。
{
mode: "production",
plugins: [
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify("staging")
}
})
]
}

最佳答案

我认为您希望您的临时构建像您的生产构建一样被优化。据我所知,一些库(如 React)会检查 NODE_ENV === "production"删除一些错误处理或提供进一步的优化。所以如果你设置 NODE_ENVstaging他们会“认为”这是一个开发环境。

在这种情况下,我要做的就是使用不同的变量,例如:

package.json

"scripts": {
"dev": "webpack-dev-server --config webpack.config.js --env.TARGET_ENV=development",
"staging": "webpack --config webpack.config.js --env.TARGET_ENV=staging",
"production": "webpack --config webpack.config.js --env.TARGET_ENV=production"
},

webpack.config.js
module.exports = (env) => {
const mode = env.TARGET_ENV === 'development' ? 'development' : 'production';

return {
mode: mode,
plugins: [
new webpack.DefinePlugin({
'process.env': {
'TARGET_ENV': JSON.stringify(env.TARGET_ENV)
}
})
]
// ...rest of config based on environment
};
};

关于webpack - 我可以在 webpack 4 中使用模式为 ="staging"的 NODE_ENV ="production"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49000445/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com