说明
如果我们项目中,有太多的环境,并且环境配置文件有很多的话,放在根目录下就显得有点乱了,此时若想在根目录中创建一个目录,去单独管理这些环境配置文件,该怎么办呢?那为什么放在根目录就能识别到配置文件,放在别的路径就不行了呢?让我们看看源码中是怎么写的!
- 为什么配置文件一定要放在根路径下?
- 如何去修改这些文件的位置?
让我们带着这两个问题去vue-cli-serve
源码中了解一下吧
示例
此时我已经把环境配置文件放到了根目录下的env文件夹内,启动项目看看能不能打印出我们要的内容。
#.env.test文件
# 环境模式
API=http://xxx.xxx.xx.xx:8080
# 项目中默认的api
VUE_APP_BASE_API = $API
当打开控制台查看输出时,发现VUE_APP_BASE_API
这个信息并没有获取到,所以配置文件不在根目录下时匹配不到的!
查看源码
当我们在node_modules
中找到cli-service
中的Service.js
,在里面发现有个loadEnv
方法,顾名思义,这个方法就是用来加载我们项目中根路径下的环境配置文件了。
在此处打个断点debugger
来查看一下发现,this.context
这个路径实则是我们的根路径,然后后面拼接上我们的配置文件名,如果配置文件位置移动了,那肯定就是找不到了!
Service.js
文件在/node_modules/@vue/cli-service/lib中
那这个this.context
是怎么来的呢?其实是vue-cli-service
一开始启动的时候传进去的process.cwd()
prcess.cwd() 获取项目的根路径
修改路径
此时我们已经知道为什么找不到env目录下的环境配置文件了,只需要把loadEnv
方法中的this.context
改成能找到env目录的信息即可,以env目录为示例,把路径稍微改下,拼接上env目录,再来重启项目查看下结果。
重启后,发现环境配置文件里的信息VUE_APP_BASE_API
就能获取到了,就很棒,然后就能愉快的把所有环境配置文件移到该目下了。
提醒!当我们改了node_modules中的文件信息,上传git或者拉取代码的时候,修改的文件可能没有同步!