Угловая цель построения CLI против среды

В Угловом CLI, какая разница между параметрами --target и --environment при выполнении команды сборки?

Из документации:

ng build может указать как цель сборки (--target = production, так и --target = разработка) и файл среды, который будет использоваться с этой сборкой (--environment = dev или --environment = prod). По умолчанию используется цель построения и среда разработки.

Однако они никогда не проясняют различия между ними.

Из того, что я могу собрать, флаг --environment контролирует, какой файл environment.ts (environment.ts vs environment.prod.ts) используется при выполнении сборки. Но тогда что --target контролирует?

Ответ 1

--environment является ключом для объекта apps [0].environments из.angular-cli.json

Это похоже на профиль для работающей среды (например: локальный, сервер разработки, тестовый сервер, CI-сервер, промежуточный сервер, рабочий сервер и т.д.). Значением объекта apps [0].environments является имя файла со всеми настройками среды. Там вы можете настроить конечную точку сервера, ключи и все остальное, что вы хотите. Тогда вы можете использовать его внутри своего кода:

import {environment} from '@environments/environment';
const userEndPoint = '${environment.apiRoot}/user/';

Любая среда может быть производственной (environment.production === true) или непроизводственной, т.е. разработкой (environment.production === false). Это цель, которая может быть определена также с помощью следующего параметра:

--target представляет собой --target двух ценностей: development или production. Это мета-флаги, которые устанавливают другие флаги:

Флаг | --dev | --prod
--- | --- | ---
--aot | false | true
--environment | dev | prod
--output-hashing | media | all
--sourcemaps | true | false
--extract-css | false | true
--named-chunks | true | false
--build-optimizer | false | true с AOT и Angular 5

--prod также устанавливает следующие непомечаемые настройки:
- Добавляет работника сервиса, если настроено в.angular-cli.json.
- Заменяет process.env.NODE_ENV в модулях на производственное значение (это необходимо для некоторых библиотек, например, для реагирования).
- Запускает UglifyJS на коде.

от https://github.com/angular/angular-cli/wiki/build/1cf783837c392f5fadc7286e1fb28220b9a1b507#--dev-vs---prod-builds

Ответ 2

Из документации: Build Targets and Environment Files

ng build может указать как цель сборки (--target=production и --target=development) и файл среды, который будет использоваться с этой сборкой (--environment=dev или --environment=prod). По умолчанию используется цель построения и среда разработки.

Построение целевого набора для "Производство" имеет следующие эффекты:

  1. В преддверии компиляции времени, что означает, что компилятор Angular не включается в окончательную сборку, что подразумевает быструю визуализацию, малый размер
  2. Хеширование пакетов
  3. Минимизация сгенерированных файлов javascript
  4. Угловые прогоны в режиме производства, следовательно, он не проверяет каждое обнаружение изменений дважды
  5. Прогрессивные веб-приложения работают только в этом режиме

Ответ 3

--target = production означает, что angular-cli будет использовать все для сборки, которые он использует для производства. --environment = prod означает, что объект, который у вас есть в приложении "среда", будет иметь флаг "production" = true.

Ответ 4

Начиная с Angular CLI 6, опция среды устарела.

Параметр среды в командах, связанных со сборкой, заменен на fileReplacements, см. Вики, чтобы узнать, как его можно использовать.

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

"Производственная" конфигурация создается по умолчанию, когда вы используете CLI для создания проекта, и вы можете использовать эту конфигурацию, указав опцию --prod.

Разница между средой разработки по умолчанию и рабочей средой заключается в том, что в конфигурации разработки используются значения по умолчанию CLI (например, исходные карты), в то время как производственная конфигурация включает AOT, оптимизации и т. --prod Мета-флаг --prod нацелен на "производственную" конфигурацию и включает рабочий режим производства.

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

Термин "среда" даже был заменен на "цель сборки" в части документации.