1.首先大家需要知道.env.文件名这种文件的作用,这边不做过多的解释,自行百度。
贴出.env文件参考
ENV = 'production'
outputDir = 'prod'
VUE_APP_BASE_API = ''
2.通常来说npm run build会执行.env.production这个文件夹,也就是说你在.env.production这个文件夹配置的VUE_APP_BASE_API赋值给全局请求拦截的baseURL,即可打包基础地址为VUE_APP_BASE_AP的包。
import axios from 'axios'
// create an axios instance
const service = axios.create({
baseURL: process.env.VUE_APP_BASE_API,
//配置请求头
// headers: {
// "Content-Type": "application/json;charset=utf-8"
// },
timeout: 5000,
})
按照这个道理我们可以配置其他不同的环境。
3.但是问题来啦,我们假如打包测试环境或者其他不同环境的话,我们还用npm run build肯定是不行的,这个时候我们需要在package.json文件里面进行配置
//--mode 后面都是.env文件的文件名
"scripts": {
"dev": "vue-cli-service serve",
"test": "vue-cli-service build --mode test",
"prod": "vue-cli-service build --mode production"
},
这边我们就可以用不同的命令去打包不同的环境
4.那么问题又来了,我打包生成的文件名字都一样,这样之前的文件就会覆盖啊??????
这个也简单的,我们需要在vue.config.js里面配置一下就行了,代如下
//输出文件名
outputDir: process.env.outputDir,
这样配置之后就可以打包不同名称的文件夹