最近接到一个奇葩需求,搞完的一个项目要部署到不同的线上服务器上,以往用VUE-cli3脚手架开发,都是免配置的,在axios.js里面进行一个判断就行了,如下:
// 配置接口地址
if(process.env.NODE_ENV === "development"){
//开发环境
axios.defaults.baseURL = 'http://192.168.9.81:8080/cdps'
}else{
//线上环境
axios.defaults.baseURL = 'http://219.139.128.22:50193/core'
}
但是面对多个线上地址的请求,这个配置就行不通了,所以就翻了翻vue-cli的文档,找到了下面这个办法,可能简单粗暴了点,但是好用,有更好的办法的欢迎回复。
1.在项目的package.json文件的统计目录建一个文件,名字为.env.xxx,比如我的就叫.env.enshi(因为线上节点的名字叫enshi),再建一个.env.production,作为标准的线上环境文件
2.在.env.enshi文件中配置如下:
NODE_ENV = 'production'
VUE_APP_BASE_URL = 'http://120.192.66.228:8080/cdps'
3.在.env.production文件中配置如下:
NODE_ENV = 'production'
VUE_APP_BASE_URL = 'http://yy.yczxyy.com:5066/core'
4.在package.json中增加配置:
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
//这是增加的
"build-enshi": "vue-cli-service build --mode enshi",
"lint": "vue-cli-service lint"
},
5.在axios.js里面修改下,如下:
// 配置接口地址
if(process.env.NODE_ENV === "development"){
//开发环境
axios.defaults.baseURL = 'http://192.168.9.81:8080/cdps'
}else{
//线上环境
axios.defaults.baseURL = process.env.VUE_APP_BASE_URL
}
6.打包的时候用如下指令:
npm run build-enshi //enshi节点的请求路径
npm run build //标准线上环境
以上!