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.
- Оркестрация — когда скрипты разрастаются.