Предположим, у нас есть сборка проекта Vue.js с Vue-cli3, package.json:
{
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
...
}
Кроме того, у нас есть план по переносу нашего проекта в публичный репозиторий на GitHub, поэтому нам нужны разные переменные среды для публичного репо и для локальной разработки.
Vue-cli 3 дает нам modes
: https://cli.vuejs.org/guide/mode-and-env.html#modes
У меня есть такие файлы:
- .env
- .env.development
- .env.production
- .env.local
- .env.development.local
- .env.production.local
Содержание .env:
NODE_ENV=production
VUE_APP_PATH=http://website.com/
VUE_APP_API_ROUTE=api/v1/
Содержание .env.development:
NODE_ENV=development
VUE_APP_PATH=http://dev-website.com/
Содержимое .env.development.local:
NODE_ENV=development
VUE_APP_PATH=http://localhost:8080/
Когда я сделаю npm run serve
, я ожидаю, что process.env.VUE_APP_PATH
будет равно http://localhost:8080/
, но, к сожалению, оно все равно = http://dev-website.com/
.
Таким образом, проблема заключается в том, что переменные из локальных файлов env (т.е. .env.development.local) не перезаписаны, существуют из другого файла env (т.е. .env.development).
Как я могу использовать этот подход vue-cli для перезаписи необходимых переменных? Документация говорит о приоритете: An env file for a specific mode (e.g. .env.production) will take higher priority than a generic one (e.g. .env).
, но с файлами .local он не работает.