В моей компании мы используем lerna для управления репозиториями библиотек javascript.У нас есть около 30 пакетов и 10 разработчиков, работающих над этим.По мере роста команды и увеличения количества пакетов, мы ищем простой способ управления тем, как мы автоматически выпускаем новые версии каждого пакета.
Мы запускаем новые выпуски несколько раз в день в зависимости от того, какой пакет был изменен, чтобы наши проекты могли использовать новые библиотеки.Мы ограничены только для запуска выпусков из нашего CI, поскольку у нас нет учетных данных для отправки в наш внутренний репозиторий npm.Таким образом, мы запускаем lerna publish --exact --skip-npm
локально, чтобы поднять каждый пакет, в котором было изменение, затем объединяем файлы package.json и запускаем его через CI, который заботится о публикации.
Это вызывает проблемы со временем,особенно если более чем один разработчик пытается выпустить одновременно.Или когда человек, изменяющий версии, не тот, кто изменил код и не знает, должен ли он быть патчем, небольшим ударом и т. Д.
Поскольку мы используем машинопись, у нас была одна идеябыло сравнить файлы d.ts из предыдущего выпуска с файлом из нового выпуска, чтобы узнать, изменилось ли что-то, и автоматически принять решение об исправлении патча или второстепенного.Основной удар будет сделан вручную разработчиками.Хотя файлы d.ts не находятся в git-репозитории, было бы неприятно делать что-то подобное.
Мне интересно, есть ли у кого-то опыт управления пакетами в таком репо?Каково ваше рабочее пространство?Как вы заботитесь о выпусках в среде непрерывной интеграции?
Спасибо!