Skip to content

Polyrepo CLI

v1.0.5CLI-инструментNode.js

Интерактивный CLI для управления папкой локальных npm-пакетов: бамп версии через PR, публикация в npm, GitHub Releases и отслеживание рассинхронизации зависимостей — всё из одного инструмента.

Polyrepo CLI
Начать знакомство →
npm install -g polyrepo-cli
01 — Назначение

Когда это пригодится

Один пакет — это git clone и npm publish. Пятнадцать пакетов в одной папке — это уже вопрос дисциплины: какая ветка где называется, что не запушено, кто забыл прогнать тесты перед релизом. polyrepo-cli берёт этот процесс на себя.

Релиз каждого пакета — ручной ритуал по кругу

Зайти в директорию, поднять версию, открыть PR, дождаться мерджа, поставить тег — и повторить то же самое для следующего пакета. Чекбокс с выбором нужных пакетов запускает весь цикл сразу для всех, один раз.

В одном репозитории основная ветка — master, в другом — main

Один и тот же скрипт с фиксированным именем ветки ломается ровно там, где кто-то переименовал основную ветку на GitHub. Актуальное имя определяется для каждого репозитория отдельно, и остальные команды работают одинаково независимо от него.

Публикация в npm обрывается на середине списка

Логин истёк, а узнаётся об этом только когда пятый пакет из десяти уже собран для публикации. Авторизация проверяется и при необходимости обновляется один раз, до того как начнётся сама публикация.

После десятков релизов в репозиториях копится мусор

Ветки после смёрдженных PR остаются висеть и локально, и в списке удалённых веток, ссылки на давно удалённые на GitHub ветки не исчезают сами. Периодическая проверка находит это и предлагает безопасно убрать.

02 — Фичи

Коротко о главном

Настройка и обнаружение репозиториев

Настройка и обнаружение репозиториев

Список папок с пакетами хранится в конфиге — без ручного редактирования JSON. Отдельная команда сверяет список репозиториев GitHub-организации с тем, что уже склонировано локально, и подтягивает недостающее.

Статус всех пакетов одним взглядом

Статус всех пакетов одним взглядом

Версия, ветка, git-статус, тег, релиз и состояние npm-реестра для каждого пакета — проверяются параллельно. Устаревшие зависимости и открытые PR агрегируются по всем репозиториям сразу, с экспортом в Markdown, JSON, CSV или HTML.

Диагностика с безопасным автофиксом

Диагностика с безопасным автофиксом

Проверяется окружение, дрейф основной ветки от реального состояния на GitHub, расхождение с origin, защита ветки и мёртвые ветки после релизов — и там, где это безопасно, чинится само.

Синхронизация веток без сюрпризов

Синхронизация веток без сюрпризов

Выбранные репозитории подтягиваются до актуальной основной ветки — какой бы она ни называлась, master или main. Полный сброс грязного репозитория доступен только по явному флагу, никогда по умолчанию.

Управляемый релизный процесс

Управляемый релизный процесс

Версия поднимается через ветку и PR, процесс продолжается с того места, где прервался предыдущий запуск, черновик CHANGELOG.md пишется сам из истории коммитов. Отдельные шаги закрывают процесс тегом и GitHub Release.

Публикация и произвольные команды

Публикация и произвольные команды

В npm публикуются только пакеты, реально обогнавшие реестр, а истёкший логин подхватывается сам. Любая команда прогоняется по выбранным репозиториям одна за другой, с живым выводом в терминал.