实现效果:
- 给测试环境打包时,采用A接口地址;
- 给生产环境打包时,采用B接口地址;
实现原理
process.argv
获取当前运行的node命令,再根据不同命令,获取不同环境下的相应配置;
实现步骤
1、修改package.json,新增测试环境的打包命令
"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"start": "npm run dev",
"build": "node build/build.js prod", // 修改原来的打包命令,新增 prod 字段
"build:test": "node build/build.js test" // 新增的测试环境打包命令 test
},
2、在config目录下新建test.env.js
module.exports = {
NODE_ENV: '"test"',
BASE_API:'"http://x.x.x.x"' // 测试
}
3、在webpack.prod.conf.js中新增配置
关键点
关键点:process.argv 可以获取package.json中当前运行的命令
例如:运行npm run build:test
,结合上方的package.json,即运行node build/build.js test
,
可通过process.argv
获取到node命令以空格分割后的数组,即['node',‘build/build.js’,'test'];
因此,就可以根据命令的不同,获取不同的打包环境
let command = process.argv[2]; // process.argv =====> 获取package.json中scripts中传入的运行命令node build/build.js test
console.log('当前打包环境:',command);
let env = require(`../config/${command}.env`);