Комментарии 4
Очень актуальная для меня тема. Поделюсь своим опытом по решению ваших проблем, описанных в конце статьи:
Публикация библиотек возможна только вручную. Невозможно настроить CI/CD для этого дела, потому что повышение версии вынуждено создавать новый коммит с обновленными версиями.
Публикацию библиотек на самом деле можно очень даже изящно настроить для CI/CD. Суть в том, что вас никто не заставляет использовать lerna publish для повышения версий пакетов. Для этого есть специальная команда lerna version. И эта команда очень любезно создаёт новый коммит с добавлением гит тэга. А в CI/CD вы можете запускать джобу только на тэгированный коммит. Так что это не баг, а фича:) Можно спокойно пушить в мастер Work In Progress коммиты, но деплой произойдёт только после вызова lerna version, либо после ручного добавления гит тэга к коммиту.
Зоопарк версий. Это обратная сторона медали возможности версионности пакетов. Появилось 20 package.json, у которых одни и те же зависимости, но в разных версиях. Первое, что плохо - это их сложнее обновлять. Нужно пройти много файлов
Для этого есть простой и изящный yarn upgrade-interactive. Вот прям специально для этого он и сделан. Вообще, кстати, рекомендую присмотреться к yarn berry. Он поддерживает монорепозитории (workspaces), но при этом он не заменяет, а дополняет lerna. Например, команда lerna bootstrap больше не нужна, с этим справляется команда yarn.
А вот, кстати, недостаток под номером 1 я не понял. Можете рассказать подробнее, что не так?
Монорепозитории NX и Lerna, или Туда и обратно