Monorepo ломается не из-за размера, а из-за плохих границ между пакетами
За неделю в репах чаще всего всплывают 4 ошибки:
— общий utils-пакет превращают в свалку всего подряд;
— внутренние импорты идут через относительные пути на три экрана;
— один tsconfig/линтер распространяют на разные типы кода;
— сборка запускается для всего дерева, хотя менялся один пакет.
Нормальный monorepo держится на правилах: у каждого пакета свой public API, зависимости идут только через него, а shared-код выносится не «куда удобно», а туда, где есть владелец и понятный контракт. Если пакет нельзя удалить без боли — он, скорее всего, уже слишком жирный.
Для TypeScript это особенно заметно: разный tsconfig для app, lib и test убирает лишние конфликты, а отдельные workspace-зависимости делают граф сборки читаемым. В Turborepo или Nx главный выигрыш не в магии, а в том, что кэш и фильтрация начинают работать предсказуемо. ⚙️
Если в репозитории трудно ответить, кто владеет пакетом и кто может его менять, monorepo уже начал мешать. Сначала режьте границы, потом ускоряйте сборку.
DevTools Brief — обзор инструментов
@devtools_brief
Monorepo ломается не из-за размера, а из-за плохих границ между пакетами
Этот пост опубликован в Telegram-канале DevTools Brief — обзор инструментов. Подписаться можно по ссылке: @devtools_brief.