Внести вклад
Конфигурации

Конфигурация Angular workspace

Файл 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, либо объектом для более тонкой настройки. Эта опция включает различные оптимизации вывода сборки, включая:

Несколько опций можно использовать для тонкой настройки оптимизации приложения.

Опции Подробности Тип значения Значение по умолчанию
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