Как настроить среду с помощью 'ng serve' в Angular 6

Я пытаюсь обновить приложение Angular 5.2 до Angular 6. Я успешно следовал инструкциям в руководстве по обновлению Angular (включая обновление angular-cli до v6) и теперь пытаюсь обслуживать приложение через

ng serve --env=local

Но это дает мне ошибку:

Неизвестная опция: '--env'

Я использую несколько сред (dev/local/prod), и именно так это работало в Angular 5.2. Как я могу установить среду сейчас в Angular 6?

Ответ 1

Вам нужно использовать новую опцию configuration (это работает и для ng build и для ng serve)

ng serve --configuration=local

или же

ng serve -c local

Если вы посмотрите на свой файл angular.json, вы увидите, что у вас есть более точный контроль над настройками для каждой конфигурации (например, оптимизатор, файлы среды,...)

"configurations": {
  "production": {
    "optimization": true,
    "outputHashing": "all",
    "sourceMap": false,
    "extractCss": true,
    "namedChunks": false,
    "aot": true,
    "extractLicenses": true,
    "vendorChunk": false,
    "buildOptimizer": true,
    "fileReplacements": [
      {
        "replace": "src/environments/environment.ts",
        "with": "src/environments/environment.prod.ts"
      }
    ]
  }
}

Вы можете получить больше информации здесь для управления конфигурациями среды.

Как указано в другом ответе ниже, если вам нужно добавить новую "среду", вам нужно добавить новую конфигурацию в задачу сборки, а также, в зависимости от ваших потребностей, в задачи обслуживания и тестирования.

Добавление новой среды

Редактировать: чтобы было понятно, замены файлов должны быть указаны в разделе build. Поэтому, если вы хотите использовать ng serve с определенным файлом environment (скажем, dev2), вам сначала нужно изменить раздел build чтобы добавить новую конфигурацию dev2

"build": {
   "configurations": {
        "dev2": {

          "fileReplacements": [
            {
              "replace": "src/environments/environment.ts",
              "with": "src/environments/environment.dev2.ts"
            }
            /* You can add all other options here, such as aot, optimization, ... */
          ],
          "serviceWorker": true
        },

Затем измените раздел serve чтобы добавить новую конфигурацию, указывая на конфигурацию build dev2, которую вы только что объявили

"serve":
      "configurations": {
        "dev2": {
          "browserTarget": "projectName:build:dev2"
        }

Затем вы можете использовать ng serve -c dev2, который будет использовать конфигурационный файл dev2

Ответ 2

Этот ответ кажется хорошим.
однако, это привело меня к ошибке, поскольку это привело к
Configuration 'xyz' could not be found in project...
ошибка в сборке.
Он необходим не только для обновления конфигураций сборки, но и для обслуживания.

Так что просто не надо путать

  1. --env не поддерживается в angular 6
  2. --env был изменен на --configuration || -c (и теперь более мощный)
  3. для управления различными envs, в дополнение к добавлению нового файла среды, теперь необходимо внести некоторые изменения в файл angular.json:
    • добавить новую конфигурацию в сборку {... "build": "configurations":... свойство
    • новая конфигурация сборки может содержать только часть fileReplacements (но доступно больше опций)
    • добавить новую конфигурацию в свойство serve {... "serve": "configurations":...
    • Новая конфигурация подачи должна содержать browserTarget="your-project-name:build:staging"

Ответ 3

Вы можете попробовать: ng serve --configuration=dev/prod

Для сборки используйте: ng build --prod --configuration=dev

Надеюсь, вы используете другую среду.

Ответ 4

Для угловых 2 - 5 см. Статью Multiple Environment in angular

Для Angular 6 используйте ng serve --configuration=dev

Примечание: См. Ту же статью для угловых 6, а также. Но везде, где вы найдете --env вместо этого используйте --configuration. Это хорошо работает для угловых 6.

Ответ 5

Используйте эту команду для Angular 6, чтобы построить

ng build --prod --configuration=dev

Ответ 6

Вы можете использовать команду ng serve -c dev для среды разработки и ng serve -c prod для продакшен среды

в то время как строительство также применяется. Вы можете использовать ng build -c dev для сборки dev

Ответ 7

Angular больше не поддерживает --env, вместо этого вы должны использовать

ng serve -c dev

для среды разработки и,

ng serve -c prod 

для производства.

ПРИМЕЧАНИЕ: -c или --configuration