Создание и обслуживание приложений Angular¶
17.01.2023
На этой странице обсуждаются специфические для сборки параметры конфигурации для проектов Angular.
Конфигурирование окружений приложений¶
Вы можете определить различные именованные конфигурации сборки для вашего проекта, такие как development
и staging
, с различными значениями по умолчанию.
Каждая именованная конфигурация может иметь значения по умолчанию для любых опций, которые применяются к различным builder targets, таким как build
, serve
и test
. Команды Angular CLI build
, serve
и test
могут затем заменить файлы на соответствующие версии для вашего целевого окружения.
Настройка параметров по умолчанию для конкретного окружения¶
Используя Angular CLI, начните с выполнения команды generate environments, показанной здесь, чтобы создать каталог src/environments/
и настроить проект на использование этих файлов.
1 |
|
Каталог src/environments/
проекта содержит базовый конфигурационный файл environment.ts
, который обеспечивает конфигурацию для production
, среды по умолчанию. Вы можете переопределить значения по умолчанию для дополнительных окружений, таких как development
и staging
, в конфигурационных файлах для конкретной цели.
Например:
1 2 3 4 |
|
Базовый файл environment.ts
содержит настройки окружения по умолчанию. Например:
1 2 3 |
|
Команда build
использует его в качестве цели сборки, если окружение не указано. Вы можете добавить дополнительные переменные, либо как дополнительные свойства объекта окружения, либо как отдельные объекты. Например, следующее добавляет значение по умолчанию для переменной в среду по умолчанию:
1 2 3 4 |
|
Вы можете добавить файлы конфигурации, специфичные для конкретной цели, такие как environment.development.ts
. Следующее содержимое устанавливает значения по умолчанию для цели сборки разработки:
1 2 3 4 |
|
Использование переменных, специфичных для среды, в вашем приложении¶
Следующая структура приложения настраивает цели сборки для сред development
и staging
:
1 2 3 4 5 6 7 8 |
|
Чтобы использовать определенные вами конфигурации окружения, ваши компоненты должны импортировать исходный файл окружения:
1 |
|
Это гарантирует, что команды build
и serve
смогут найти конфигурации для конкретных целей сборки.
Следующий код в файле компонента (app.component.ts
) использует переменную окружения, определенную в конфигурационных файлах.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
Настройка замены файлов для конкретной цели¶
Основной файл конфигурации CLI, angular.json
, содержит секцию fileReplacements
в конфигурации для каждой цели сборки, которая позволяет вам заменить любой файл в программе TypeScript на версию этого файла для конкретной цели. Это полезно для включения специфичного для конкретной цели кода или переменных в сборку, предназначенную для конкретной среды, такой как production
или staging
.
По умолчанию никакие файлы не заменяются. Вы можете добавить замену файлов для определенных целей сборки.
Например:
1 2 3 4 5 6 7 8 9 10 11 |
|
Это означает, что когда вы собираете конфигурацию разработки с помощью команды ng build --configuration development
, файл src/environments/environment.ts
заменяется на версию файла src/environments/environment.development.ts
для конкретной цели.
При необходимости вы можете добавить дополнительные конфигурации. Чтобы добавить окружение staging, создайте копию src/environments/environment.ts
под названием src/environments/environment.staging.ts
, затем добавьте конфигурацию staging
в angular.json
:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Вы можете добавить дополнительные параметры конфигурации в эту целевую среду. Любая опция, которую поддерживает ваша сборка, может быть переопределена в целевой конфигурации сборки.
Чтобы выполнить сборку с использованием конфигурации staging, выполните следующую команду:
1 |
|
Вы также можете настроить команду serve
на использование целевой конфигурации сборки, если добавите ее в раздел "serve:configurations"
в файле angular.json
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
Настройка бюджетов размеров¶
По мере роста функциональности приложений увеличивается и их размер. CLI позволяет установить пороговые значения размеров в конфигурации, чтобы гарантировать, что части приложения не выйдут за пределы определенных вами границ.
Определите границы размеров в конфигурационном файле CLI, angular.json
, в разделе budgets
для каждой настроенной среды.
1 2 3 4 5 6 7 8 9 |
|
Вы можете задать бюджеты размеров для всего приложения и для отдельных частей. Каждая запись бюджета настраивает бюджет определенного типа.
Укажите значения размеров в следующих форматах:
Значение размера | Подробности |
---|---|
123 или 123b | Размер в байтах. |
123kb | Размер в килобайтах. |
123mb | Размер в мегабайтах. |
12% | Процент размера относительно базового уровня. (Недействительно для базовых значений.) |
Когда вы настраиваете бюджет, система сборки предупреждает или сообщает об ошибке, когда определенная часть приложения достигает или превышает установленный вами граничный размер.
Каждая запись бюджета представляет собой объект JSON со следующими свойствами:
type
- Тип бюджета. Одно из:
bundle
— Размер конкретного пакета.initial
— Размер JavaScript, необходимый для загрузки приложения. По умолчанию предупреждение при 500 кб и ошибка при 1 мб.allScript
— Размер всех скриптов.all
— Размер всего приложения.anyComponentStyle
— Размер таблицы стилей любого одного компонента. По умолчанию предупреждение при размере 2 кб и ошибка при размере 4 кб.anyScript
— Размер любого одного скрипта.any
— Размер любого файла.
name
- Имя пакета (для
type=bundle
). baseline
- Базовая величина для сравнения.
maximumWarning
- Максимальный порог предупреждения относительно базовой величины.
maximumError
- Максимальный порог ошибки относительно базовой величины.
minimumWarning
- Минимальный порог предупреждения относительно базовой величины.
minimumError
- Минимальный порог ошибки относительно базовой величины.
warning
- Порог предупреждения относительно базовой величины (min & max).
error
- Порог ошибки относительно базовой величины (min & max).
Настройка зависимостей CommonJS¶
Рекомендуется избегать использования модулей CommonJS в приложениях Angular. Зависимость от модулей CommonJS может помешать пакетным и минификаторам оптимизировать ваше приложение, что приведет к увеличению размера пакета.
Вместо этого рекомендуется использовать ECMAScript modules во всех приложениях.
Для получения дополнительной информации смотрите Как CommonJS делает ваши пакеты больше.
Angular CLI выводит предупреждения, если обнаруживает, что ваше браузерное приложение зависит от модулей CommonJS. Чтобы отключить эти предупреждения, добавьте имя модуля CommonJS в опцию allowedCommonJsDependencies
в опциях build
, расположенных в файле angular.json
.
1 2 3 4 5 6 7 8 9 10 |
|
Настройка совместимости с браузерами¶
Angular CLI использует Browserslist для обеспечения совместимости с различными версиями браузеров. Autoprefixer используется для префиксации поставщиков CSS и @babel/preset-env для преобразования синтаксиса JavaScript.
Внутри Angular CLI используется приведенная ниже конфигурация browserslist
, которая соответствует поддерживаемым браузерам Angular.
1 2 3 4 5 6 |
|
Чтобы переопределить внутреннюю конфигурацию, выполните команду ng generate config browserslist
, которая создаст файл конфигурации .browserslistrc
в каталоге проекта.
Смотрите репозиторий browserslist repository для более подробных примеров того, как нацеливаться на определенные браузеры и версии.
Используйте browsersl.ist для отображения совместимых браузеров для запроса browserslist
.
Проксирование на внутренний сервер¶
Используйте proxying support в сервере разработки webpack
для перенаправления определенных URL на внутренний сервер, передавая файл в опцию сборки --proxy-config
. Например, чтобы перенаправить все обращения к http://localhost:4200/api
на сервер, работающий на http://localhost:3000/api
, выполните следующие действия.
-
Создайте файл
proxy.conf.json
в папкеsrc/
вашего проекта. -
Добавьте следующее содержимое в новый файл proxy:
1 2 3 4 5 6
{ "/api": { "target": "http://localhost:3000", "secure": false } }
-
В конфигурационном файле CLI,
angular.json
, добавьте опциюproxyConfig
к целиserve
:1 2 3 4 5 6 7 8 9 10 11
// … "architect": { "serve": { "builder": "@angular-devkit/build-angular:dev-server", "options": { "browserTarget": "your-application-name:build", "proxyConfig": "src/proxy.conf.json" }, } } // …
-
Чтобы запустить сервер разработки с данной конфигурацией прокси, вызовите
ng serve
.
Отредактируйте файл конфигурации прокси, чтобы добавить опции конфигурации; ниже приведены примеры. Описание всех опций приведено в документации webpack DevServer.
Если вы изменили конфигурационный файл прокси, то для того, чтобы изменения вступили в силу, необходимо заново запустить процесс ng serve
.
Переписать путь к URL¶
Опция конфигурации прокси pathRewrite
позволяет вам переписывать путь URL во время выполнения. Например, укажите следующее значение pathRewrite
в конфигурации прокси, чтобы удалить "api" из конца пути.
1 2 3 4 5 6 7 8 9 |
|
Если вам нужно получить доступ к бэкенду, который находится не на localhost
, установите также параметр changeOrigin
. Например:
1 2 3 4 5 6 7 8 9 10 |
|
Чтобы определить, работает ли ваш прокси как положено, установите параметр logLevel
. Например:
1 2 3 4 5 6 7 8 9 10 |
|
Уровни журнала прокси: info
(по умолчанию), debug
, warn
, error
и silent
.
Проксирование нескольких записей¶
Вы можете проксировать несколько записей на одну и ту же цель, определив конфигурацию в JavaScript.
Установите файл конфигурации прокси в proxy.conf.mjs
(вместо proxy.conf.json
), и укажите файлы конфигурации, как показано в следующем примере.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
В конфигурационном файле CLI, angular.json
, укажите на файл конфигурации JavaScript-прокси:
1 2 3 4 5 6 7 8 9 |
|
Обход прокси¶
Если вам нужно по желанию обойти прокси или динамически изменить запрос перед отправкой, добавьте опцию обхода, как показано в этом примере JavaScript.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Использование корпоративного прокси-сервера¶
Если вы работаете за корпоративным прокси, бэкенд не может напрямую проксировать вызовы на любой URL за пределами вашей локальной сети. В этом случае вы можете настроить внутренний прокси-сервер на перенаправление вызовов через ваш корпоративный прокси-сервер с помощью агента:
1 |
|
Когда вы определяете переменную окружения http_proxy
или HTTP_PROXY
, автоматически добавляется агент для передачи вызовов через ваш корпоративный прокси при запуске npm start
.
Используйте следующее содержание в конфигурационном файле JavaScript.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|