常规操作
这是一个通过修改vue.config.js来替代新建env文件配置环境变量的方法,这样能减少配置文件数量,减少根目录文件数量,让配置更易阅读和修改,让目录和代码更清爽。(这都是主观感受,欢迎小伙伴轻拍)
修改package.json
通过vue-cli-service --mode local来指定是哪个运行环境
"scripts": {
"serve-local": "vue-cli-service serve --port 8806 --mode local",
"serve-dev": "vue-cli-service serve --port 8806 --mode development",
"serve-prod": "vue-cli-service serve --port 8806 --mode production",
"build": "vue-cli-service build --mode production",
"lint": "vue-cli-service lint"
},
添加.env文件
为每个mode新建一个.env.[mode]
的文件,值env文件里面指定变量,
VUE_APP_SERVER_URL = "localUrl"
....
项目中运用
比如在config.js中导入环境变量
export const SERVICE_URL = process.env.VUE_APP_SERVICE_URL;
问题
- 每个mode都对应一个env文件,local,dev,prod三种模式就是3个文件,如果再还有别的测试服务器还的再加文件
- env默认在根目录,如果能专门建个env文件夹感觉会更好。
- env文件都是文本显示,不易阅读和修改
骚操作解决方法
修改package.json
和常规操作一样
修改vue.config.js
通过process.VUE_CLI_SERVICE.mode
来获取--mode的传值,根据mode值来通过js的方法来设置环境变量。如果配置环境变量只写到vue.config.js文件下不优雅,小伙伴可以自行通过js的方式来组织环境变量的文件,欢迎小伙伴举一反三
const mode = process.VUE_CLI_SERVICE.mode
console.log("mode=", mode);
if(mode == "local"){
process.env.VUE_APP_SERVICE_URL = "localUrl"
process.env.VUE_APP_PLATFORM = "/same"
}else if(mode == "development"){
process.env.VUE_APP_SERVICE_URL = "devUrl"
process.env.VUE_APP_PLATFORM = "/same"
}else if(mode == "production"){
process.env.VUE_APP_SERVICE_URL = "prodUrl"
process.env.VUE_APP_PLATFORM = "/same"
}
module.exports = {
publicPath : './'
};
不知道这样配置环境变量是不是舒适一些?欢迎小伙伴留下宝贵的意见和建议!
项目中运用
和常规用法一样
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。