Ответ вслух Middle Микрофронтенды и монорепо обновлено

Монорепозиторий и границы пакетов

Вопрос

Что даёт монорепозиторий с точки зрения архитектуры и чем он отличается от FSD как способа держать границы?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Разница принципиальная: FSD - это соглашение, которое проверяет линтер, а монорепо - ограничение, которое проверяет сборщик. Линтер можно отключить строкой, package.json - нет.

Что должно прозвучать в ответе

  • каждая часть - отдельный пакет со своими зависимостями

  • границу обеспечивает сборщик, а не соглашение и не линтер

  • нельзя импортировать то, чего нет в package.json - это сильнее любого правила

  • инструменты: Nx, Turborepo, pnpm workspaces

  • плюсом идут общий CI и кеш сборки

  • цена - инфраструктура: версии, сборка, деплой, время входа

  • FSD и монорепо не конкурируют: слои живут внутри пакета

Что могут спросить следом

  • Когда монорепо становится лишним?
  • Как версионировать общие пакеты?

Разбор

Разница принципиальная: FSD - это соглашение, которое проверяет линтер, а монорепо - ограничение, которое проверяет сборщик. Линтер можно отключить строкой, package.json - нет.

В монорепо каждая часть (приложение, библиотека, дизайн-система) - отдельный пакет со своим списком зависимостей. Импорт того, чего в списке нет, просто не соберётся. Это самая жёсткая из доступных гарантий.

Плюсом идёт инфраструктура: общий CI, кеш сборки по графу зависимостей, единые версии инструментов. Nx и Turborepo умеют пересобирать только затронутое.

Цена - инфраструктурная и постоянная: версии пакетов, конфигурация сборки, деплой нескольких артефактов, время входа нового человека.

Важно сказать, что это не альтернатива FSD: слои и слайсы живут внутри пакета. Монорепо режет по приложениям, FSD - внутри одного.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.