Угловая цель построения 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
). По умолчанию используется цель построения и среда разработки.
Построение целевого набора для "Производство" имеет следующие эффекты:
- В преддверии компиляции времени, что означает, что компилятор Angular не включается в окончательную сборку, что подразумевает быструю визуализацию, малый размер
- Хеширование пакетов
- Минимизация сгенерированных файлов javascript
- Угловые прогоны в режиме производства, следовательно, он не проверяет каждое обнаружение изменений дважды
- Прогрессивные веб-приложения работают только в этом режиме
Ответ 3
--target = production означает, что angular-cli будет использовать все для сборки, которые он использует для производства. --environment = prod означает, что объект, который у вас есть в приложении "среда", будет иметь флаг "production" = true.
Ответ 4
Начиная с Angular CLI 6, опция среды устарела.
Параметр среды в командах, связанных со сборкой, заменен на fileReplacements, см. Вики, чтобы узнать, как его можно использовать.
Система сборки была переработана, чтобы ее было легче настраивать. Параметры конфигурации сборки перенесены в файл конфигурации рабочей области (angular.json).
"Производственная" конфигурация создается по умолчанию, когда вы используете CLI для создания проекта, и вы можете использовать эту конфигурацию, указав опцию --prod.
Разница между средой разработки по умолчанию и рабочей средой заключается в том, что в конфигурации разработки используются значения по умолчанию CLI (например, исходные карты), в то время как производственная конфигурация включает AOT, оптимизации и т. --prod
Мета-флаг --prod
нацелен на "производственную" конфигурацию и включает рабочий режим производства.
Переключение в рабочий режим ускоряет его работу, отключая специальные проверки разработки, такие как циклы обнаружения двойных изменений.
Термин "среда" даже был заменен на "цель сборки" в части документации.