更新:2020 / 2 / 16
1. 网络包^4
如果您使用的是 webpack4 或最新版本,使用环境变量非常方便!
webpack 命令行环境选项 --env 允许你传入任意数量的环境变量。环境变量将可以在您的 webpack.config.js 中访问。例如,--env.production 或 --env.NODE_ENV=local(NODE_ENV 通常用于定义环境类型,请参见此处。)
例如,命令如下:
env.NODE_ENV=development webpack-dev-server
在 webpack.config.js 中,我们可以在里面定义 env 变量new webpack.DefinePlugin()
以使其在应用程序中可用。
webpack.config.js:(插件)
// pass the env and return the webpack setting
module.exports = env => {
console.log(env);
return {
....
plugins: [
new HtmlWebpackPlugin({
template: "./public/index.pug",
inject: false
}),
new webpack.DefinePlugin({ customparam1: JSON.stringify(env.customparam1) })
],
}
]
....
}
};
};
2. 创建反应应用
检查 react-create-app doc,变量将以REACT_APP_
命令:
REACT_APP_CUSTOM_VARIABLE=234 npm run dev
应用程序:
console.log(process.env.REACT_APP_CUSTOM_VARIABLE) // 234
3.老答案
命令:
webpack-dev-server --customparam1=value
webpack.config.js:
var path = require("path");
var webpack = require("webpack");
function findPara(param){
let result = '';
process.argv.forEach((argv)=>{
if(argv.indexOf('--' + param) === -1) return;
result = argv.split('=')[1];
});
return result;
}
const customparam1 = findPara('customparam1');
module.exports = {
...
plugins: [
new webpack.DefinePlugin({
customparam1:JSON.stringify(customparam1)
})
]
};
主js文件:
if(customparam1 === xxx){ ... }