TGViewer
axaxadev | Разработка интерфейсов axaxadev | Разработка интерфейсов @axaxadev · 237 subscribers
Post #56 346
(Моно)репозитории

Обычный сценарий: один репозиторий = один пакет/сервис.
Сложный сценарий: десятки мелких реп, которые зависят друг от друга и требуют синхронизации.

Монорепа — это один репозиторий, много пакетов и сервисов, единые правила для зависимостей и релизов.

Когда монорепа уместна

- общий стек и общие зависимости
- нужен единый стандарт качества и релизов
- есть связность между пакетами/сервисами
- хочется упростить локальную разработку и интеграцию
- релизы «цепочкой» — норма, а не исключение

Когда монорепа НЕ нужна

- проект маленький и автономный
- релизы независимы и редки
- разный стек, разные команды, разные процессы
- есть жёсткие ограничения по доступам
- нет ресурсов поддерживать дисциплину CI/CD

Подводные камни

1. Линковка пакетов
Без нормальной схемы линковки легко получить «работает только у меня».

2. Установка зависимостей
Чем больше пакетов, тем больше хаоса в node_modules.
Нужны единые версии, lockfile‑политики и дедупликация.

3. Версионирование

- _Fixed_ (все пакеты одной версии) — проще, но тяжелее для частых релизов.
- _Independent_ — гибче, но требует строгих правил и автоматики.

4. CI/CD
Сборка всего на каждый чих = боль.
Нужны инкрементальные сборки, кэширование и селективный запуск — только затронутые пакеты.

5. Границы
Монорепа не должна превращаться в безразмерную свалку.
Нужны чёткие зоны ответственности и правила владения.

Шпаргалка: «как прижечь шею»

1) Определись с правилами:

- единый стиль и линтер;
- единый lockfile;
- единая политика версий.

2) Определи структуру:

- packages/* для пакетов;
- apps/* или services/* для сервисов;
- общий tools/ или scripts/.

3) Настрой релизы:

- changelog‑генерация
- автоматическая публикация
- согласованные теги и правила

4) Ускорь CI:

- кэш зависимостей;
- запуск только затронутых пакетов;
- параллельные задачи.

Личный опыт.

Работал в команде общих компонентов — занимался версионированием и автопубликацией монорепы.

Система контроля версий у нас была не git, поэтому open-source инструменты (все завязаны на git) не подходили. Пришлось писать своё. Здесь пригодилась теория графов: пакеты — узлы, зависимости — рёбра. Чтобы при независимом версионировании не выставить кому-то лишнюю версию, нужна топологическая сортировка.

Для версионирования использовали conventional commits: разработчик прямо в коммите указывает тип изменения (patch/minor/major), дальше автоматика. Просто и предсказуемо.

Если есть вопросы про организацию монорепы — пишите в комментарии.

Выводы

Монорепа — это не магия, а дисциплина.
Она спасает от «двух новых голов на каждую фичу», но требует правил, инструментов и внимательного ухода.
Если головы растут слишком быстро — пора прижигать.

Если хочется больше погружения:
- Гайд от создателей Nx (сами участвуют в сравнении, но материал полезный): https://monorepo.tools/
- Хороший доклад про монорепу от Вовы Гриненко: https://youtu.be/okN-o7BseSg?si=oOIY0qAHuyJIWqfZ
- Conventional commits: https://www.conventionalcommits.org/en/v1.0.0/
monorepo.tools Monorepo Explained Everything you need to know about monorepos, and the tools to build them.
  • 👍 10
  • ❤ 1
More from @axaxadev
  1. Sep 15, 2026В рамках оптимизации token spend было принято единственное верное решение — уроки английск…
  2. Aug 14, 2026Как я ставлю задачи и вообще пользуюсь ИИ-агентами. у меня нет универсального промпта, иде…
  3. Aug 6, 2026Post #67
  4. Jun 10, 2026люди такие интересные едут в метро и не знают, что вышел Claude Fable 5. и не знают.. и ед…
  5. Mar 30, 2026"Продакт" потратил все мои токены. Я тут на выходных решил на агентах Open AI Codex сделат…
  6. Mar 20, 2026Когнитивный психолог Шейн Литтрелл разработал Corporate Bullshit Receptivity Scale (CBSR)…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →