Angular позволяет разрабатывать не только приложения, но и переиспользуемые библиотеки. Для публикации используется стандартный механизм npm. Процесс начинается с генерации библиотеки через Angular CLI:
ng generate library my-lib
Создаётся структура с отдельным projects/my-lib,
собственным package.json и точкой входа
public-api.ts.
Файл public-api.ts определяет, какие сущности будут
доступны потребителю пакета:
export * from './lib/my-lib.module';
export * from './lib/components/button/button.component';
Экспорт только необходимых модулей и компонентов:
Angular при сборке библиотеки ориентируется именно на этот файл.
Для сборки используется команда:
ng build my-lib
Результат помещается в каталог dist/my-lib. В
процессе:
.d.ts;Именно содержимое dist публикуется в npm, а не исходный
код проекта.
В каталоге dist/my-lib находится итоговый
package.json. Ключевые поля:
Пример:
{
"name": "@scope/my-lib",
"version": "1.0.0",
"peerDependencies": {
"@angular/core": "^16.0.0",
"@angular/common": "^16.0.0"
}
}
Использование peerDependencies предотвращает
дублирование Angular в приложении-потребителе.
Angular-библиотеки следуют семантическому версионированию:
Изменение публичных сигнатур компонентов или сервисов требует увеличения MAJOR-версии. Добавление необязательных параметров допускается в MINOR.
Перед публикацией выполняется аутентификация:
npm login
Публикация выполняется из каталога dist/my-lib:
npm publish --access public
Для scoped-пакетов флаг --access public обязателен,
иначе пакет будет приватным.
После публикации обновления выполняются по тому же циклу:
Angular CLI обеспечивает стабильную структуру сборки, что упрощает долгосрочную поддержку и совместимость с новыми версиями фреймворка.