intermediate

Workspaces

Управляйте multi-package репозиториями через общую установку, локальный linking, оркестрацию скриптов и границы публикации.

Workspaces позволяют одному репозиторию содержать несколько пакетов с общей установкой и локальным linking. Пакеты ссылаются на соседей (`"ui": "workspace:*"`) без публикации tarball в разработке.

					{
  "name": "root",
  "private": true,
  "workspaces": ["apps/*", "packages/*"]
}
				

Корневые скрипты оркестрируют сборки (`npm run build --workspaces`, `pnpm -r build`, `yarn workspaces foreach`). Важны границы: у каждого пакета — свой public API, политика версий и список зависимостей.

На интервью: discovery workspaces, filtered-команды, local protocol, зависимости root vs package и когда поверх нужны Turborepo/Nx.

Типовые ошибки: импорт между пакетами без dependency; утечка app-кода в shared; root `devDependencies` маскируют отсутствие deps в пакете.

Компромисс — скорость в multi-package репо против дисциплины границ и сложности релизов.

Чеклист:

  • Ownership и public API пакетов.
  • Явные sibling dependencies.
  • Filtered scripts для точечного CI.
  • Оркестрация — когда скрипты разрастаются.