У меня есть общий (или не очень общий) сценарий для yarn workspaces
, и я не нашел подходящего для меня руководства в Интернете.
рабочие области пряжи выглядят так:
- monorepo
- packages
- client
- admin
- theme
- lib
- Клиент используется в качестве наших конечных пользователей, это реактивный проект
- Admin используется в качестве бэк-офиса для пользователей с правами администратора и также встроен в реагирующий
- Тема используется для всех комплектов пользовательского интерфейса (компонентов) и сборника рассказов. Мы используем комплект пользовательского интерфейса в проектах
client
и admin
, и это classi c «стиль monorepo» (lerna) для разделения компонентов между двумя проектами. Эта папка должна быть общей только для этого проекта. - Lib используется для всех API и совместно используется "Business logi c" между несколькими проектами. У меня есть 4 проекта, которые используют те же функциональные возможности lib для запросов API, аутентификации, Redux и др.
Дополнительная информация:
monorepo
- это root хранилище с .gitmodules
- Каждая подпапка является отдельным git репозиторием
- Мы используем рабочие пространства для упрощения разработки на
theme
и на client
и admin
проекте на
Вопросы:
Мы запускаем yarn start
только в client
проекте и admin
проекте. Оба проекта используют одинаковую theme
и одинаковую lib
функциональность. Поскольку lib
используется совместно с другими проектами, он обновляется еженедельно:
- Как я могу предотвратить его обновление из проекта в проект? я должен работать с
tags
в git репозитории или я должен удалить lib
из рабочего пространства monorepo и работать с ним как npm package
(весь смысл в простом процессе разработки, когда мы изменяем файл lib
нам не нужно npm update
это снова и снова. - Если
lib
будет npm пакетом, как я могу сказать monorepo использовать рабочие пространства при запуске yarn start
и использовать npm версия, когда я запускаю yarn build
?
Пожалуйста, советуйте лучшие практики для этого сценария.
Заранее спасибо, Лев.