如今的前端越来越趋近于自动化,比如:在构建项目时,我们需要对不同环境做出调用不同接口的处理。通常情况下,我们会在封装通用http请求方法的模块里面设置一个标识来表示当前处理哪种环境,
再通过判断标识来决定使用哪个接口。
例如:
1 2 3 4 5
| let env = 0; const domain = env == 0 ? 'test/api/xxx' : 'api/xxx'; axios.defaults.baseURL = domain; axios.defaults.withCredentials = true; axios.defaults.headers['Content-Type'] = 'application/json;charset=UTF-8';
|
这种方式容易导致失误,万一哪次打包的时候忘记更改状态,更新到正式环境就导致数据流失,不可预测后果。
如果我们在执行npm run build
的时候可以自动选择变更环境,能够更好的使我们减少失误,项目因此更加自动化。
查看vue-cli文档可知,通过配置.env文件实现构建环境的变更。
1.新建公共的构建环境处理文件common.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| const env = (() => { const ENV = { domain: '', }
switch (process.env.NODE_ENV) { case 'development': ENV.domain = `https://test/api/xxx`; ENV.otherApi = `https://test/otherapi/xxx`; break default: ENV.domain = process.env.API_ENV === 'dev' ? `https://test/api/xxx` : `https://api/xxx`; ENV.otherApi = process.env.API_ENV === 'dev' ? `https://test/otherapi/xxx` : `https://otherapi/xxx`; break }
return ENV })()
export default env
|
2.通用的http模块引入common.js
1 2 3 4
| import common from './common'
const domain = common.domain; const otherApi = common.otherApi;
|
3.新建.env.development文件
.env.development
文件可在package.json的scripts启动开发环境构建命令里面配置参数供vue-cli读取。
1 2
| NODE_ENV=development API_ENV=dev
|
4.新建.env.product文件
.env.product
文件可在package.json的scripts启动生产环境构建命令里面配置参数供vue-cli读取。
1 2
| NODE_ENV=production API_ENV=prod
|
5.package.json配置启动
1 2 3 4 5 6 7 8 9
| { "scripts": { "start": "vue-cli-service serve --open", "build": "vue-cli-service build --mode product", "build:dev": "vue-cli-service build --mode development", } }
|
通过参数--mode xxx
读取对应的配置文件,变更相应的环境变量来构建整个项目。