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

Структура файлов рабочего пространства и проекта

Вы разрабатываете приложения в контексте рабочего пространства (workspace) Angular. Рабочее пространство содержит файлы для одного или нескольких проектов. Проект — это набор файлов, составляющих приложение или библиотеку общего пользования.

Команда Angular CLI ng new создает рабочее пространство.

ng new my-project

При запуске этой команды CLI устанавливает необходимые npm-пакеты Angular и другие зависимости в новом рабочем пространстве с корневым приложением под названием my-project.

По умолчанию ng new создает начальный скелет приложения на корневом уровне рабочего пространства вместе со сквозными ( e2e) тестами. Скелет представляет собой простое приветственное приложение, готовое к запуску и легкое для изменения. Корневое приложение имеет то же имя, что и рабочее пространство, а исходные файлы находятся в подпапке src/ рабочего пространства.

Это поведение по умолчанию подходит для типичного стиля разработки "multi-repo", где каждое приложение находится в собственном рабочем пространстве. Новичкам и пользователям среднего уровня рекомендуется использовать ng new для создания отдельного рабочего пространства для каждого приложения.

Angular также поддерживает рабочие пространства с несколькими проектами. Этот тип среды разработки подходит для опытных пользователей, разрабатывающих библиотеки общего пользования, и для предприятий, использующих стиль разработки "monorepo" (монорепозиторий) с единым репозиторием и глобальной конфигурацией для всех проектов Angular.

Чтобы настроить рабочее пространство monorepo, следует пропустить создание корневого приложения. См. раздел Настройка рабочего пространства с несколькими проектами ниже.

Файлы конфигурации рабочего пространства

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

Файлы конфигурации рабочего пространства Назначение
.editorconfig Конфигурация для редакторов кода. См. EditorConfig.
.gitignore Указывает намеренно неотслеживаемые файлы, которые Git должен игнорировать.
README.md Документация для рабочего пространства.
angular.json Конфигурация CLI для всех проектов в рабочем пространстве, включая опции сборки, запуска и тестирования каждого проекта. Подробнее см. в разделе Конфигурация рабочего пространства Angular.
package.json Настраивает зависимости npm-пакетов, доступные всем проектам в рабочем пространстве. См. документацию npm для получения информации о конкретном формате и содержимом этого файла.
package-lock.json Предоставляет информацию о версиях для всех пакетов, установленных в node_modules клиентом npm. Подробнее см. в документации npm.
src/ Исходные файлы для проекта корневого приложения.
public/ Содержит изображения и другие ресурсы, которые dev-сервер отдает как статические файлы и которые копируются "как есть" при сборке приложения.
node_modules/ Установленные npm-пакеты для всего рабочего пространства. Зависимости node_modules всего рабочего пространства видны всем проектам.
tsconfig.json Базовая конфигурация TypeScript для проектов в рабочем пространстве. Все остальные файлы конфигурации наследуются от этого базового файла. Для получения дополнительной информации см. соответствующую документацию TypeScript.

Файлы проекта приложения

По умолчанию команда CLI ng new my-app создает папку рабочего пространства с именем "my-app" и генерирует новый скелет приложения в папке src/ на верхнем уровне рабочего пространства. Вновь созданное приложение содержит исходные файлы для корневого модуля с корневым компонентом и шаблоном.

Когда структура файлов рабочего пространства готова, вы можете использовать команду ng generate в командной строке для добавления функциональности и данных в приложение. Это начальное корневое приложение является приложением по умолчанию для команд CLI (если вы не измените значение по умолчанию после создания дополнительных приложений).

Для рабочего пространства с одним приложением подпапка src рабочего пространства содержит исходные файлы (логику приложения, данные и ресурсы) для корневого приложения. Для рабочего пространства с несколькими проектами дополнительные проекты в папке projects содержат подпапку project-name/src/ с такой же структурой.

Исходные файлы приложения

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

Вспомогательные файлы приложения Назначение
app/ Содержит файлы компонентов, в которых определены логика и данные вашего приложения. Подробности см. ниже.
favicon.ico Иконка для использования этим приложением в панели закладок.
index.html Главная HTML-страница, которая отдается при посещении вашего сайта. CLI автоматически добавляет все JavaScript и CSS файлы при сборке приложения, поэтому вам обычно не нужно добавлять сюда теги <script> или <link> вручную.
main.ts Главная точка входа для вашего приложения.
styles.css Глобальные стили CSS, применяемые ко всему приложению.

Внутри папки src папка app содержит логику и данные вашего проекта. Компоненты, шаблоны и стили Angular находятся здесь.

Файлы src/app/ Назначение
app.config.ts Определяет конфигурацию приложения, которая сообщает Angular, как собрать приложение. По мере добавления новых провайдеров в приложение, они должны быть объявлены здесь.

Генерируется только при использовании опции --standalone.
app.component.ts Определяет корневой компонент приложения с именем AppComponent. Представление (view), связанное с этим корневым компонентом, становится корнем иерархии представлений по мере добавления компонентов и сервисов в ваше приложение.
app.component.html Определяет HTML-шаблон, связанный с AppComponent.
app.component.css Определяет таблицу стилей CSS для AppComponent.
app.component.spec.ts Определяет модульный тест (unit test) для AppComponent.
app.module.ts Определяет корневой модуль с именем AppModule, который сообщает Angular, как собрать приложение. Изначально объявляет только AppComponent. По мере добавления новых компонентов в приложение, они должны быть объявлены здесь.

Генерируется только при использовании опции --standalone false.
app.routes.ts Определяет конфигурацию маршрутизации приложения.

Файлы конфигурации приложения

Специфичные для приложения файлы конфигурации для корневого приложения находятся на корневом уровне рабочего пространства. Для рабочего пространства с несколькими проектами специфичные для проекта файлы конфигурации находятся в корне проекта, в папке projects/project-name/.

Специфичные для проекта файлы конфигурации TypeScript наследуются от tsconfig.json всего рабочего пространства.

Специфичные для приложения файлы конфигурации Назначение
tsconfig.app.json Специфичная для приложения конфигурация TypeScript, включая опции компилятора Angular.
tsconfig.spec.json Конфигурация TypeScript для тестов приложения.

Несколько проектов

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

Настройка рабочего пространства с несколькими проектами

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

ng new my-workspace --no-create-application

Затем вы можете генерировать приложения и библиотеки с именами, уникальными в рамках рабочего пространства.

cd my-workspace
ng generate application my-app
ng generate library my-lib

Структура файлов нескольких проектов

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

my-workspace/
  ├── …                (файлы конфигурации всего рабочего пространства)
  └── projects/        (приложения и библиотеки)
      ├── my-app/      (явно сгенерированное приложение)
      │   └── …        (код и конфигурация, специфичные для приложения)
      └── my-lib/      (сгенерированная библиотека)
          └── …        (код и конфигурация, специфичные для библиотеки)

Файлы проекта библиотеки

Когда вы генерируете библиотеку с помощью CLI (командой типа ng generate library my-lib), сгенерированные файлы попадают в папку projects/ рабочего пространства. Для получения дополнительной информации о создании собственных библиотек см. Создание библиотек.

В отличие от приложения, библиотека имеет свой собственный файл конфигурации package.json.

В папке projects/ папка my-lib содержит код вашей библиотеки.

Исходные файлы библиотеки Назначение
src/lib Содержит логику и данные проекта вашей библиотеки. Как и проект приложения, проект библиотеки может содержать компоненты, сервисы, модули, директивы и пайпы.
src/public-api.ts Указывает все файлы, которые экспортируются из вашей библиотеки.
ng-package.json Файл конфигурации, используемый ng-packagr для сборки вашей библиотеки.
package.json Настраивает зависимости npm-пакетов, необходимые для этой библиотеки.
tsconfig.lib.json Специфичная для библиотеки конфигурация TypeScript, включая опции компилятора Angular.
tsconfig.lib.prod.json Специфичная для библиотеки конфигурация TypeScript, которая используется при сборке библиотеки в производственном режиме (production mode).
tsconfig.spec.json Конфигурация TypeScript для модульных тестов библиотеки.