Як встановити середовище за допомогою "ng serve" у Angular 6


169

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

ng serve --env=local

Але це дає мені помилку:

Невідомий варіант: '--env'

Я використовую кілька середовищ ( dev/local/prod), і саме так він працював у Angular 5.2. Як я можу встановити середовище зараз у куті 6?


1
її v6, ви оновлюєте angular-cliразом із усім додатком, тому я подумав, що це очевидно:]
Мартін Адамек

5
Дуже корисно, Мартіне. Дякуємо, що поділилися своєю інформацією. Насправді це не найменш очевидно.
Maxxx

Відповіді:


303

Вам потрібно скористатися новою configurationопцією (це працює ng buildі для ng serve)

ng serve --configuration=local

або

ng serve -c local

Якщо ви подивитеся на свій angular.jsonфайл, ви побачите, що ви маєте більш тонкий контроль над налаштуваннями для кожної конфігурації (aot, оптимізатор, файли оточення, ...)

"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розділ, щоб також додати нову конфігурацію, вказуючи на щойно оголошену конфігурацію dev2 build

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

Потім ви можете використовувати ng serve -c dev2, який буде використовувати файл конфігурації dev2


чи знаєте ви, чи можна також додати base-href у конфігурації? або просто в ng build --c інсценуванні --base-href = / yyy /
Едуардо Толіно

@EduardoTolino: Так, можна, є baseHrefваріант
Девід

Де я можу вказати порт віддаленої налагодження для середовища розробки? Так як налагоджувати VSCode. У Angular 6звичайно. Так що ng serveкоманда включає порт віддаленого відладчика при запуску Chromeбраузера.
Стефан

оновлено інформаційне посилання: github.com/angular/angular-cli/wiki/…
Матео Тібакіра

1
ng serve -c місцевий час знадобиться для складання програми порівняння з "ng serve"
Vignesh

46

Ця відповідь здається гарною.
однак це призвело мене до помилки, оскільки це призвело до
Configuration 'xyz' could not be found in project ...
помилки в збірці.
Це вимагає не тільки оновлених конфігурацій збірки , але й їх обслуговування .

Тож просто не залишайте плутанини:

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

8

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

Для побудови використовувати: ng build --prod --configuration=dev

Сподіваюся, що ви використовуєте інший тип оточення.


ng serve --configuration = команда dev / prod потребує часу порівняно з ng serve чому?
Виньєш

ng serve --configuration = prod займає більше часу, ніж ng serve --configuration = prod через мінімізацію файлів та завдяки готовому коду для виробництва.
amku91

Гаразд, якщо я використовую команду "ng serve --configuration = dev", це означає, що її також потрібно більше часу
Vignesh

Ні, це не повинно займати більше часу. Середовище prod має додаткові кроки для мінімізації, зменшення якості та оптимізації коду для виробництва. Інші середовища повинні зайняти звичайний час, якщо явно не активувати ці додаткові кроки.
Регінальдо Камарго Рібейро

6

Для кутових 2 - 5 див. Статтю Кілька середовищ у кутових

Для кутових 6 використання ng serve --configuration=dev

Примітка. Ознайомтеся з тією ж статтею і для кутового 6. Але де б ви не знайшли, --envзамість цього використовуйте --configuration. Це добре працює для кутових 6.


2

Ви можете використовувати команду ng serve -c devдля середовища розробки ng serve -c prodдля виробничого середовища

в той час як будівництво також застосовується Ви можете використовувати ng build -c devдля побудови розробників


2

Кутовий більше не підтримує --env, замість цього вам доведеться користуватися

ng serve -c dev

для середовища розвитку та,

ng serve -c prod 

на виробництво.

ПРИМІТКА: -cабо--configuration


На це запитали та відповіли рік тому, також ваша відповідь неправильна, її -c(з одинарним тире) або --configuration(з подвійним тире).
Мартін Адамек

0

Використовуйте цю команду для кутового 6 для побудови

ng build --prod --configuration=dev
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.