Недавно я использовал стратегию шаблонов конфигурации для Vue, и мне она нравится, потому что она упрощает процесс настройки для каждого развертывания и не требует дополнительной конфигурации сборки поверх того, что выходит из коробки из проекта vue-cli create.

Шаг 1. Добавьте .env.{development/production}

Создайте два новых файла в корневом каталоге вашего приложения vue:

  1. .env.development — переменные среды, которые будут доступны во время сборки для сборок разработки (например, npm run serve)
  2. .env.production — Поразительно, но переменные, которые будут доступны во время сборки для производственных сборок (например, npm run build)

Шаг 2: Добавьте свою пользовательскую конфигурацию в .env.development

Эти файлы имеют формат dotenv. Пользовательские переменные среды распознаются процессом сборки vue по умолчанию, только если они имеют префикс VUE_APP_

Шаг 3. Обновите файл index.html.

Взгляните на свой /public/index.html . Вы заметите, что в форме <%= BASE_URL %> уже используется подстановка переменных. Мы собираемся использовать это существующее поведение, чтобы поместить наши пользовательские переменные в контекст Vue.

Обновите свой /public/index.html следующим встроенным скриптом (строка 12)

Теперь вы сможете нажимать window.$app.config в любом месте вашего приложения Vue, и вы получите правильную конфигурацию (вам, вероятно, следует обернуть доступ к этому в отдельный компонент).

Шаг 4: Добавьте свою пользовательскую конфигурацию в .env.production

Этот последний шаг полностью зависит от вашего конвейера развертывания и того, как вы выполняете подстановку переменных.

Это шаг подстановки переменных, с которым я работаю в Azure devops. В частности, переменные заменяются, когда они соответствуют форме #{name} Итак, учитывая это, мои переменные окружения .env.production выглядят так:

В результате, когда производственная сборка запускается для моего приложения Vue, переменные в /public/index.html заменяются вторым уровнем строк шаблона, которые впоследствии готовы к замене при развертывании.

Шаг 5: Дайте мне знать, если вы придумаете что-то лучше

Это то, над чем я работаю прямо сейчас, но может быть что-то лучше или простые улучшения, которые я пропустил. Не могли бы вы прокомментировать ниже, если вы найдете что-нибудь. Спасибо :)