Монорепозиторий и границы пакетов
Вопрос
Что даёт монорепозиторий с точки зрения архитектуры и чем он отличается от FSD как способа держать границы?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
каждая часть - отдельный пакет со своими зависимостями
границу обеспечивает сборщик, а не соглашение и не линтер
нельзя импортировать то, чего нет в package.json - это сильнее любого правила
инструменты: Nx, Turborepo, pnpm workspaces
плюсом идут общий CI и кеш сборки
цена - инфраструктура: версии, сборка, деплой, время входа
FSD и монорепо не конкурируют: слои живут внутри пакета
Что могут спросить следом
- Когда монорепо становится лишним?
- Как версионировать общие пакеты?
Разбор
Разница принципиальная: FSD - это соглашение, которое проверяет линтер,
а монорепо - ограничение, которое проверяет сборщик. Линтер можно отключить строкой,
package.json - нет.
В монорепо каждая часть (приложение, библиотека, дизайн-система) - отдельный пакет со своим списком зависимостей. Импорт того, чего в списке нет, просто не соберётся. Это самая жёсткая из доступных гарантий.
Плюсом идёт инфраструктура: общий CI, кеш сборки по графу зависимостей, единые версии инструментов. Nx и Turborepo умеют пересобирать только затронутое.
Цена - инфраструктурная и постоянная: версии пакетов, конфигурация сборки, деплой нескольких артефактов, время входа нового человека.
Важно сказать, что это не альтернатива FSD: слои и слайсы живут внутри пакета. Монорепо режет по приложениям, FSD - внутри одного.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.