Как я могу поддерживать автоматический список изменений для каждого модуля в monorepo?

#git #version #monorepo #changelog

#git #версия #monorepo #Журнал изменений

Вопрос:

Я работаю над проектом, который состоит из нескольких репозиториев git. Существует несколько микросервисов, интерфейс, некоторые пакеты npm и контейнеры gateway и т. Д.

Поскольку я часто сталкиваюсь с проблемой, что для новых функций мне приходится изменять код в нескольких репозиториях, я теряюсь во множестве запросов на извлечение.

Чтобы упростить это, я подумываю о перемещении репозиториев в один monorepo. Фактически, я уже объединил некоторые пакеты npm в одном репозитории.

До сих пор я использовал standard-version для создания журнала изменений на основе коммитов git. Я все еще хочу иметь один список изменений для каждого модуля. Очевидно, что это не работает из коробки, standard-version поскольку он проверяет коммиты для каждого репозитория, а не для каталога модуля.

Возможно ли каким-то образом создать список изменений для каждого модуля, например, используя только сообщения о фиксации, где файлы в каталоге затронуты, или используя области в сообщениях о фиксации? Есть еще идеи?

Обычно каждый модуль будет иметь свою собственную версию, не все из них являются JS / Node / npm-проектами. Также хорошо, если мне нужно управлять публикацией вручную для каждого модуля.

Ответ №1:

Я не знаю, как вы настроили свой репозиторий, потому что вы не предоставили ни .versionrc одного файла или package.json примеров файлов, но есть --path вариант для standard-version .

Из команды справки:

 npx standard-version --help
 

Я получил это:

 --path              Only populate commits made under this path                     [string]
 

Таким образом, вы можете либо использовать эту опцию в своих package.json сценариях в качестве параметра для вашей команды release, либо добавить ее в свой .versionrc .

Это должно быть легко, если у вас есть отдельные файлы для каждого пакета, если у вас есть глобальный скрипт, у вас должны быть просто отдельные команды выпуска для каждого пакета с каждым путем, установленным для каждой команды.