我的应用使用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”。
我尝试在下面使用config进行构建,但是bundle.js变成NODE_ENV =“ production”。
{
mode: "production",
plugins: [
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify("staging")
}
})
]
}
Webpack-cli已被弃用,并且env的语法将不再适用于Webpack-command(https://github.com/webpack-contrib/webpack-command#the---env-flag-is-nuked)。
为了满足您的要求,我将使用一个简单的env变量并以标准节点方式使用它
var API_URL = {
production: JSON.stringify('https://foo.bar/api'),
development: JSON.stringify('http://localhost:3000/api'),
staging: JSON.stringify('http://foo.stage.bar/api')
}
module.exports = function(argv) {
const TARGET = process.env.TARGET_ENV ? process.env.TARGET_ENV : 'development';
return {
mode: argv.mode ? argv.mode : 'development',
....
new webpack.DefinePlugin({
'API_URL': API_URL[TARGET]
}),
....
}
然后像这样调用webpack:
TARGET_ENV=staging webpack
这样,您将在应用程序中全局找到您的环境变量API_URL。
我会避免通过define插件重新定义NODE_ENV。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句