Вы разрабатываете приложения в контексте рабочего пространства (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 для модульных тестов библиотеки. |