Монорепозиторий с Lerna для Angular
Содержание
Последовательность действий
Создаем приложение для
ng new monorepo --createApplication=false
npx lerna init
ng g lib first
Изменим путь где lerna будет искать пакеты на путь где angular хранит свои проекты
|
|
Теперь папку packages, автоматически созданную lerna, можно удалить
rm -r packages
И создадим пару библиотек
ng g lib first
ng g lib second
Если требуется, меняем имена пакетов в библиотеках
|
|
|
|
npx lerna add --peer "@company/first --scope @company/second
As peer dependency (recommended by angular)
Настроим параметры сборки библиотки first
package.json
|
|
`ng-package.json’
|
|
Так же надо настроить и вторую библиотеку
Запустим магию lerna
npx lerna bootstrap --contents dist
В projects/second/node_modules будет создана ссылка на projects/first/dist
tsconfig.json
|
|
Конфиги
package.json
|
|
ng-package.json
|
|
lerna.json
|
|
|
|
tsconfig.json
|
|
Осталось добавить в .gitignore
**/dist
и исправить /node_modules
на node_modules
И можно пользоваться:
ng build first
ng build second
Links:
- https://izifortune.com/share-angular-libraries-with-lerna/
- https://medium.com/angular-in-depth/release-management-in-angular-with-lerna-21b4ab417c59
- https://medium.com/disney-streaming/combining-multiple-angular-applications-into-a-single-one-e87d530d6527
- https://github.com/lerna/lerna#readme
- https://habr.com/ru/company/yandex/blog/469021/
- https://habr.com/ru/post/448766/
- https://octoperf.com/blog/2019/08/22/kraken-angular-workspace-multi-application-project/
Автор Arswarog
Обновлено 29 января 2020