Файл angular.json на корневом уровне Angular workspace предоставляет значения конфигурации по умолчанию для всего workspace и для конкретных проектов. Они используются инструментами сборки и разработки, предоставляемыми Angular CLI.
Значения путей, указанные в конфигурации, относительны к корневому каталогу workspace.
Общая структура JSON
На верхнем уровне angular.json несколько свойств настраивают workspace, а секция projects содержит остальные опции конфигурации для каждого проекта.
Значения Angular CLI по умолчанию, заданные на уровне workspace, можно переопределить значениями по умолчанию на уровне проекта.
Также можно переопределить значения по умолчанию на уровне проекта с помощью командной строки.
Следующие свойства на верхнем уровне файла настраивают workspace.
| Свойства | Подробности |
|---|---|
version |
Версия файла конфигурации. |
newProjectRoot |
Путь, где создаются новые проекты через инструменты вроде ng generate application или ng generate library. Путь может быть абсолютным или относительным к каталогу workspace. По умолчанию projects |
cli |
Набор опций, настраивающих Angular CLI. См. Опции конфигурации Angular CLI ниже. |
schematics |
Набор schematics, настраивающих значения по умолчанию опций подкоманд ng generate для этого workspace. См. schematics ниже. |
projects |
Содержит подсекцию для каждого приложения или библиотеки в workspace с опциями конфигурации, специфичными для проекта. |
Начальное приложение, созданное с ng new app-name, перечислено в «projects»:
Когда вы создаёте проект библиотеки с ng generate library, проект библиотеки также добавляется в секцию projects.
ПОЛЕЗНО: Секция projects файла конфигурации не соответствует в точности структуре файлов workspace.
- Начальное приложение, созданное
ng new, находится на верхнем уровне структуры файлов workspace. - Другие приложения и библиотеки по умолчанию находятся в каталоге
projects.
Дополнительную информацию см. в Структура файлов workspace и проекта.
Опции конфигурации Angular CLI
Следующие свойства — набор опций, настраивающих Angular CLI.
| Свойство | Подробности | Тип значения | Значение по умолчанию |
|---|---|---|---|
analytics |
Делиться анонимными данными об использовании с командой Angular. Boolean указывает, делиться ли данными, а строка UUID делится данными с использованием псевдонимного идентификатора. | boolean | string |
false |
cache |
Управление постоянным дисковым кэшем, используемым Angular CLI Builders. | Опции Cache | {} |
schematicCollections |
Список коллекций schematics для использования в ng generate. |
string[] |
[] |
packageManager |
Предпочтительный инструмент менеджера пакетов. | npm | cnpm | pnpm | yarn| bun |
npm |
warnings |
Управление специфичными для Angular CLI предупреждениями консоли. | Опции Warnings | {} |
Опции Cache
| Свойство | Подробности | Тип значения | Значение по умолчанию |
|---|---|---|---|
enabled |
Настраивает, включено ли дисковое кэширование для сборок. | boolean |
true |
environment |
Настраивает, в каком окружении включён дисковый кэш. _ ci включает кэширование только в окружениях continuous integration (CI)._ local включает кэширование только вне окружений CI.* all включает кэширование везде. |
local | ci | all |
local |
path |
Каталог, используемый для хранения результатов кэша. | string |
.angular/cache |
Опции Warnings
| Свойство | Подробности | Тип значения | Значение по умолчанию |
|---|---|---|---|
versionMismatch |
Показывать предупреждение, когда глобальная версия Angular CLI новее локальной. | boolean |
true |
Опции конфигурации проекта
Следующие свойства конфигурации верхнего уровня доступны для каждого проекта в projects['project-name'].
| Свойство | Подробности | Тип значения | Значение по умолчанию |
|---|---|---|---|
root |
Корневой каталог файлов этого проекта относительно каталога workspace. Пустой для начального приложения, которое находится на верхнем уровне workspace. | string |
None (required) |
projectType |
Одно из «application» или «library». Приложение может работать независимо в браузере, а библиотека — нет. | application | library |
None (required) |
sourceRoot |
Корневой каталог исходных файлов этого проекта. | string |
'' |
prefix |
Строка, которую Angular добавляет к selectors при генерации новых компонентов, директив и pipes с помощью ng generate. Можно настроить для идентификации приложения или области функциональности. |
string |
'app' |
i18n |
Опции интернационализации для проекта. Определяет исходную локаль и дополнительные локали для сборки. См. Определение локалей в конфигурации сборки. | См. опции i18n | {} |
schematics |
Набор schematics, настраивающих значения по умолчанию опций подкоманд ng generate для этого проекта. См. раздел Generation schematics. |
См. schematics | {} |
architect |
Значения по умолчанию конфигурации для целей Architect builder этого проекта. | См. Настройка целей builder | {} |
Опции i18n
Используйте опцию проекта i18n для определения исходной локали приложения и любых дополнительных локалей для сборки.
| Свойство | Подробности | Тип значения | Значение по умолчанию |
|---|---|---|---|
sourceLocale |
Локаль, используемая в исходном коде приложения. Может быть строкой идентификатора локали или объектом конфигурации. | string | объект sourceLocale |
"en-US" |
locales |
Карта идентификаторов локалей к файлам перевода или объектам конфигурации локали. | object |
{} |
Объект sourceLocale
Передайте объект вместо строки, чтобы настроить выходной каталог или base HREF для исходной локали:
| Свойство | Подробности | Тип значения | Значение по умолчанию |
|---|---|---|---|
code |
Идентификатор исходной локали. | string |
"en-US" |
baseHref |
Переопределяет HTML <base href> для этой локали. Имя выходного каталога остаётся кодом локали. Нельзя использовать вместе с subPath. |
string |
Locale code |
subPath |
Задаёт и имя выходного каталога, и HTML <base href> для этой локали. Нельзя использовать вместе с baseHref. |
string |
Locale code |
Объект Locale
Каждая запись locales может быть строкой пути, массивом путей или объектом:
| Свойство | Подробности | Тип значения | Значение по умолчанию |
|---|---|---|---|
translation |
Путь или пути к файлу(ам) перевода для этой локали. | string | string[] |
|
baseHref |
Переопределяет HTML <base href> для этой локали. Имя выходного каталога остаётся идентификатором локали. Нельзя использовать вместе с subPath. |
string |
Locale code |
subPath |
Задаёт и имя выходного каталога, и HTML <base href> для этой локали. Нельзя использовать вместе с baseHref. |
string |
Locale code |
ПОЛЕЗНО: Используйте subPath вместо baseHref, когда также нужно переименовать выходной каталог — например, выводить в de-DE/ вместо de/.
Schematics
Angular schematics — инструкции по модификации проекта путём добавления новых файлов или изменения существующих. Их можно настроить, сопоставив имя schematic с набором опций по умолчанию.
«Имя» schematic имеет формат: <schematic-package>:<schematic-name>.
Schematics для подкоманд ng generate Angular CLI по умолчанию собраны в пакете @schematics/angular.
Например, schematic для генерации компонента с ng generate component — @schematics/angular:component.
Поля, указанные в схеме schematic, соответствуют разрешённым значениям аргументов командной строки и значениям по умолчанию для опций подкоманд Angular CLI.
Можно обновить файл схемы workspace, чтобы задать другое значение по умолчанию для опции подкоманды. Например, чтобы по умолчанию отключить standalone в ng generate component:
{
"projects": {
"my-app": {
"schematics": {
"@schematics/angular:component": {
"standalone": false
}
}
}
}
}
Настройка CLI builders
Architect — инструмент, который Angular CLI использует для выполнения сложных задач, таких как компиляция и запуск тестов. Architect — оболочка, запускающая указанный builder для выполнения данной задачи согласно конфигурации цели. Можно определять и настраивать новые builders и цели для расширения Angular CLI. См. Angular CLI Builders.
Builders и цели Architect по умолчанию
Angular определяет builders по умолчанию для использования с конкретными командами или с общей командой ng run.
JSON-схемы, определяющие опции и значения по умолчанию для каждого из этих builders, собраны в пакете @angular-devkit/build-angular.
Схемы настраивают опции для следующих builders.
Настройка целей builder
Секция architect в angular.json содержит набор целей Architect.
Многие цели соответствуют командам Angular CLI, которые их запускают.
Другие цели можно выполнять с помощью команды ng run, и можно определять собственные цели.
Каждый объект цели указывает builder для этой цели — npm-пакет инструмента, который запускает Architect.
У каждой цели также есть секция options, настраивающая опции по умолчанию для цели, и секция configurations, именующая и указывающая альтернативные конфигурации для цели.
См. пример в Цель Build ниже.
| Свойство | Подробности |
|---|---|
build |
Настраивает значения по умолчанию для опций команды ng build. См. раздел Цель Build для дополнительной информации. |
serve |
Переопределяет значения сборки по умолчанию и предоставляет дополнительные значения serve по умолчанию для команды ng serve. Помимо опций, доступных для команды ng build, добавляет опции, связанные с раздачей приложения. |
e2e |
Переопределяет значения сборки по умолчанию для сборки приложений сквозного тестирования с помощью команды ng e2e. |
test |
Переопределяет значения сборки по умолчанию для тестовых сборок и предоставляет дополнительные значения запуска тестов по умолчанию для команды ng test. |
lint |
Настраивает значения по умолчанию для опций команды ng lint, которая выполняет статический анализ кода исходных файлов проекта. |
extract-i18n |
Настраивает значения по умолчанию для опций команды ng extract-i18n, которая извлекает локализованные строки сообщений из исходного кода и выводит файлы перевода для интернационализации. |
ПОЛЕЗНО: Все опции в файле конфигурации должны использовать camelCase, а не dash-case, как в командной строке.
Цель Build
Каждая цель в architect имеет следующие свойства:
| Свойство | Подробности |
|---|---|
builder |
CLI builder, используемый для создания этой цели, в форме <package-name>:<builder-name>. |
options |
Опции цели сборки по умолчанию. |
configurations |
Альтернативные конфигурации для выполнения цели. Каждая конфигурация задаёт опции по умолчанию для целевого окружения, переопределяя связанное значение в options. См. Альтернативные конфигурации сборки ниже. |
Например, чтобы настроить сборку с отключёнными оптимизациями:
{
"projects": {
"my-app": {
"architect": {
"build": {
"builder": "@angular/build:application",
"options": {
"optimization": false
}
}
}
}
}
}
Альтернативные конфигурации сборки
Angular CLI поставляется с двумя конфигурациями сборки: production и development.
По умолчанию команда ng build использует конфигурацию production, которая применяет несколько оптимизаций сборки, включая:
- Бандлинг файлов
- Минимизацию лишних пробелов
- Удаление комментариев и мёртвого кода
- Минификацию кода для использования коротких mangled имён
Можно определить и именовать дополнительные альтернативные конфигурации (например staging), подходящие вашему процессу разработки.
Альтернативную конфигурацию можно выбрать, передав её имя флагу командной строки --configuration.
Например, чтобы настроить сборку, где оптимизация включена только для production-сборок (ng build --configuration production):
{
"projects": {
"my-app": {
"architect": {
"build": {
"builder": "@angular/build:application",
"options": {
"optimization": false
},
"configurations": {
"production": {
"optimization": true
}
}
}
}
}
}
}
Также можно передать более одного имени конфигурации как список через запятую.
Например, чтобы применить обе конфигурации сборки staging и french, используйте команду ng build --configuration staging,french.
В этом случае команда разбирает именованные конфигурации слева направо.
Если несколько конфигураций меняют одну и ту же настройку, финальным будет последнее установленное значение.
В этом примере, если обе конфигурации staging и french задают выходной путь, будет использовано значение из french.
Дополнительные опции сборки и тестов
Настраиваемые опции для сборки по умолчанию или целевой сборки обычно соответствуют опциям, доступным для команд ng build и ng test.
Подробности этих опций и их возможных значений см. в Справочнике Angular CLI.
| Свойства опций | Подробности |
|---|---|
assets |
Объект, содержащий пути к статическим ресурсам для раздачи с приложением. Пути по умолчанию указывают на каталог public проекта. Подробнее в разделе Конфигурация Assets. |
styles |
Массив CSS-файлов для добавления в глобальный контекст проекта. Angular CLI поддерживает CSS-импорты и все основные CSS-препроцессоры. Подробнее в разделе Конфигурация Styles и scripts. |
stylePreprocessorOptions |
Объект, содержащий пары option-value для передачи препроцессорам стилей. Подробнее в разделе Конфигурация Styles и scripts. |
scripts |
Объект, содержащий JavaScript-файлы для добавления в приложение. Скрипты загружаются точно так, как если бы вы добавили их в теге <script> внутри index.html. Подробнее в разделе Конфигурация Styles и scripts. |
budgets |
Тип size-budget и пороги по умолчанию для всего приложения или его частей. Можно настроить builder сообщать предупреждение или ошибку, когда вывод достигает или превышает пороговый размер. См. Настройка size budgets. |
fileReplacements |
Объект, содержащий файлы и их замены на этапе компиляции. Подробнее в Настройка замен файлов для окружений. |
index |
Базовый HTML-документ, загружающий приложение. Подробнее в Конфигурация Index. |
security |
Объект, содержащий ключ autoCsp, который можно установить в true или false |
Дополнительные опции serve
У dev-server есть собственный набор опций, обычно соответствующих опциям, доступным для команды ng serve.
| Свойства опций | Подробности |
|---|---|
allowedHosts |
Массив хостов, на которые будет отвечать development-сервер. Эта опция задаёт одноимённую опцию Vite. Подробности см. в документации vite |
Сложные значения конфигурации
Опции assets, index, outputPath, styles и scripts могут иметь либо простые строковые значения путей, либо значения-объекты с конкретными полями.
Опции sourceMap и optimization можно установить в простое boolean-значение. Им также можно задать сложное значение с помощью файла конфигурации.
В следующих разделах подробнее о том, как эти сложные значения используются в каждом случае.
Конфигурация Assets
Каждая конфигурация цели build может включать массив assets, перечисляющий файлы или папки, которые вы хотите скопировать как есть при сборке проекта.
По умолчанию содержимое каталога public/ копируется.
Чтобы исключить ресурс, можно удалить его из конфигурации assets.
Можно дополнительно настроить копируемые ресурсы, указывая assets как объекты, а не как простые пути относительно корня workspace. Объект спецификации asset может иметь следующие поля.
| Поля | Подробности |
|---|---|
glob |
node-glob, использующий input как базовый каталог. |
input |
Путь относительно корня workspace. |
output |
Путь относительно outDir. Из соображений безопасности Angular CLI никогда не записывает файлы вне выходного пути проекта. |
ignore |
Список glob для исключения. |
followSymlinks |
Разрешить glob-паттернам следовать по symlink-каталогам. Это позволяет искать подкаталоги symlink. По умолчанию false. |
Например, пути assets по умолчанию можно представить подробнее с помощью следующих объектов.
{
"projects": {
"my-app": {
"architect": {
"build": {
"builder": "@angular/build:application",
"options": {
"assets": [
{
"glob": "**/*",
"input": "src/assets/",
"output": "/assets/"
},
{
"glob": "favicon.ico",
"input": "src/",
"output": "/"
}
]
}
}
}
}
}
}
Следующий пример использует поле ignore, чтобы исключить определённые файлы в каталоге assets из копирования в сборку:
{
"projects": {
"my-app": {
"architect": {
"build": {
"builder": "@angular/build:application",
"options": {
"assets": [
{
"glob": "**/*",
"input": "src/assets/",
"ignore": ["**/*.svg"],
"output": "/assets/"
}
]
}
}
}
}
}
}
Конфигурация Styles и scripts
Запись массива для опций styles и scripts может быть простой строкой пути или объектом, указывающим на дополнительный entry-point файл.
Связанный builder загружает этот файл и его зависимости как отдельный бандл во время сборки.
С объектом конфигурации есть возможность именовать бандл для entry point с помощью поля bundleName.
Бандл внедряется по умолчанию, но можно установить inject в false, чтобы исключить бандл из внедрения.
Например, следующие значения-объекты создают и именуют бандл, содержащий стили и скрипты, и исключают его из внедрения:
{
"projects": {
"my-app": {
"architect": {
"build": {
"builder": "@angular/build:application",
"options": {
"styles": [
{
"input": "src/external-module/styles.scss",
"inject": false,
"bundleName": "external-module"
}
],
"scripts": [
{
"input": "src/external-module/main.js",
"inject": false,
"bundleName": "external-module"
}
]
}
}
}
}
}
}
Опции препроцессора стилей
В Sass можно использовать возможность includePaths и для компонентных, и для глобальных стилей. Это позволяет добавлять дополнительные базовые пути, проверяемые для импортов.
Чтобы добавить пути, используйте опцию stylePreprocessorOptions:
{
"projects": {
"my-app": {
"architect": {
"build": {
"builder": "@angular/build:application",
"options": {
"stylePreprocessorOptions": {
"includePaths": ["src/style-paths"]
}
}
}
}
}
}
}
Файлы в этом каталоге, например src/style-paths/_variables.scss, можно импортировать откуда угодно в проекте без необходимости в относительном пути:
// src/app/app.scss
// A relative path works
@import '../style-paths/variables';
// But now this works as well
@import 'variables';
ПОЛЕЗНО: Также нужно добавить любые стили или скрипты в builder test, если они нужны для модульных тестов.
См. также Использование runtime-global библиотек в приложении.
Конфигурация Optimization
Опция optimization может быть либо boolean, либо объектом для более тонкой настройки.
Эта опция включает различные оптимизации вывода сборки, включая:
- Минификацию скриптов и стилей
- Tree-shaking
- Dead-code elimination
- Встраивание critical CSS
- Встраивание шрифтов
Несколько опций можно использовать для тонкой настройки оптимизации приложения.
| Опции | Подробности | Тип значения | Значение по умолчанию |
|---|---|---|---|
scripts |
Включает оптимизацию вывода скриптов. | boolean |
true |
styles |
Включает оптимизацию вывода стилей. | boolean | Опции оптимизации Styles |
true |
fonts |
Включает оптимизацию шрифтов. Требует доступа в интернет. | boolean | Опции оптимизации Fonts |
true |
Опции оптимизации Styles
| Опции | Подробности | Тип значения | Значение по умолчанию |
|---|---|---|---|
minify |
Минифицировать определения CSS, удаляя лишние пробелы и комментарии, объединяя идентификаторы и минимизируя значения. | boolean |
true |
inlineCritical |
Извлекать и встраивать определения critical CSS для улучшения First Contentful Paint. | boolean |
true |
removeSpecialComments |
Удалять комментарии в глобальном CSS, содержащие @license или @preserve или начинающиеся с //! или /*!. |
boolean |
true |
Опции оптимизации Fonts
| Опции | Подробности | Тип значения | Значение по умолчанию |
|---|---|---|---|
inline |
Снижать render blocking requests, встраивая внешние определения CSS Google Fonts и Adobe Fonts в HTML index-файл приложения. Требует доступа в интернет. | boolean |
true |
Можно передать значение вроде следующего, чтобы применить оптимизацию к одному или другому:
{
"projects": {
"my-app": {
"architect": {
"build": {
"builder": "@angular/build:application",
"options": {
"stylePreprocessorOptions": {
"includePaths": ["src/style-paths"]
}
}
}
}
}
}
}
Конфигурация Source map
Опция builder sourceMap может быть либо boolean, либо объектом для более тонкой настройки управления source maps приложения.
| Опции | Подробности | Тип значения | Значение по умолчанию |
|---|---|---|---|
scripts |
Выводить source maps для всех скриптов. | boolean |
true |
styles |
Выводить source maps для всех стилей. | boolean |
true |
vendor |
Разрешать source maps vendor-пакетов. | boolean |
false |
hidden |
Опускать ссылку на sourcemaps из выходного JavaScript. | boolean |
false |
sourcesContent |
Выводить исходное содержимое для файлов внутри source maps. | boolean |
true |
Пример ниже показывает, как переключать одно или несколько значений для настройки вывода source map:
{
"projects": {
"my-app": {
"architect": {
"build": {
"builder": "@angular/build:application",
"options": {
"sourceMap": {
"scripts": true,
"styles": false,
"hidden": true,
"vendor": true
}
}
}
}
}
}
}
ПОЛЕЗНО: При использовании hidden source maps source maps не ссылаются в бандле.
Они полезны, если нужны source maps только для сопоставления stack traces в инструментах отчётов об ошибках без появления в инструментах разработчика браузера.
Обратите внимание: хотя hidden предотвращает связывание source map в выходном бандле, процесс развёртывания должен позаботиться о том, чтобы не раздавать сгенерированные sourcemaps в production, иначе информация всё равно утечёт.
Source maps без содержимого источников
Можно генерировать source maps без поля sourcesContent, содержащего исходный код.
Это позволяет разворачивать source maps в production для лучших отчётов об ошибках с исходными именами, защищая при этом исходный код от раскрытия.
Чтобы исключить содержимое источников из source maps, установите опцию sourcesContent в false:
{
"projects": {
"my-app": {
"architect": {
"build": {
"builder": "@angular/build:application",
"options": {
"sourceMap": {
"scripts": true,
"styles": true,
"sourcesContent": false
}
}
}
}
}
}
}
Конфигурация Index
Настраивает генерацию HTML index приложения.
Опция index может быть либо строкой, либо объектом для более тонкой настройки.
При передаче значения как строки имя файла указанного пути будет использовано для сгенерированного файла, и он будет создан в корне настроенного выходного пути приложения.
Опции Index
| Опции | Подробности | Тип значения | Значение по умолчанию |
|---|---|---|---|
input |
Путь к файлу для использования в качестве сгенерированного HTML index приложения. | string |
None (required) |
output |
Выходной путь сгенерированного HTML index-файла приложения. Будет использован полный предоставленный путь, считающийся относительным к настроенному выходному пути приложения. | string |
index.html |
Конфигурация выходного пути
Опция outputPath может быть либо String, которая будет использована как значение base, либо Object для более тонкой настройки.
Несколько опций можно использовать для тонкой настройки выходной структуры приложения.
| Опции | Подробности | Тип значения | Значение по умолчанию |
|---|---|---|---|
base |
Указывает выходной путь относительно корня workspace. | string |
|
browser |
Имя выходного каталога для browser-сборки внутри базового выходного пути. Его можно безопасно раздавать пользователям. | string |
browser |
server |
Имя выходного каталога server-сборки внутри базового выходного пути. | string |
server |
media |
Имя выходного каталога для медиафайлов, расположенных внутри выходного browser-каталога. Эти медиафайлы обычно называются ресурсами в CSS-файлах. | string |
media |