Угловой CLI fileReplacements по умолчанию / разработка

У меня довольно сложный angular.json потому что у меня есть несколько проектов. Я хотел бы иметь отдельные файлы environment.ts для каждого проекта. Замена файла среды, когда целью сборки является производство, кажется довольно простой:

"configurations": {
  "production": {
    "fileReplacements": [
      {
        "replace": "src/environments/environment.ts",
        "with": "src/private-label/redacted/environments/environment.prod.ts"
      }
    ],
  }
}

То, что я ищу, это способ сделать то же самое с конфигурацией по умолчанию / разработки. angular.json не содержит узла конфигурации для чего-либо подобного тому, что я могу найти, и поэтому я не уверен, возможно ли это и / или где указать fileReplacements когда не нацелены на производство.

Конечно, если есть лучший способ обработки сред для каждого проекта, который я не вижу, я бы тоже заинтересовался этим.

3 ответа

Решение

Я предполагаю, что с "конфигурацией по умолчанию / разработки" вы имеете в виду то, что подается с ng serve команда.

Вариант 1: заменить файлы среды:

Вы можете указать fileReplacements массив в build также объект (этот используется для ng serve).

  "build": {
    "options": {
      [...]
      "fileReplacements": [
        {
          "replace": "src/environments/environment.ts",
          "with": "src/environments/environment.development.ts"
        }
      ]      
    },
    "configurations": {
      // other - non default - configurations 
    }
  }

Вариант 2: указать конфигурацию по умолчанию:

Если вы хотите обслуживать уже существующую конфигурацию сng serve, вы можете изменить serve опции:

  "configurations": {
    "youConfigName": {
      // config details here
    }
  },
  [...]
  "serve": {
    "options": {
      "browserTarget": "name-of-your-app:build:youConfigName"
    }
  }

Важным моментом является установка цели конфигурации сборки с помощью :yourConfigName,


Обе опции настроены для каждого проекта и, следовательно, позволяют вам полный контроль.

Кроме того, не забудьте выполнить правильную команду для запуска / обслуживания вашего приложения. В моем случае я использую Azure Pipelines для развертывания в службе приложений Azure, и команда следующая:

Обратите внимание, что "--configuration = production" является обязательным для выполнения замены файла.

Я также поместил раздел "fileReplacements" в раздел "build" и "configuration" файла angular.json:

Ответ @jowey работает, но с небольшим расширением для Angular 8. Мне пришлось добавить URL-адрес с./

"заменить": "./src/environments/environment.ts", "на": "./src/environments/environment.development.ts"

Другие вопросы по тегам