当「多个应用 + 共享组件库 + 工具包」需要统一版本与原子提交,Monorepo 让跨包改动一次提交完成,避免多仓库版本漂移。
pnpm-workspace.yaml 声明包范围,包间可「软链接」互相引用而无需发版:
packages:
- 'apps/*'
- 'packages/*'// packages/ui/package.json
{ "name": "@acme/ui", "exports": { ".": "./src/index.ts" } }应用直接 import { Button } from '@acme/ui' 即引用源码,配合 13-Vite 构建工具 的 ESM 实现「源码级联调」。
Turborepo 用任务依赖图缓存可复现任务:
// turbo.json
{ "tasks": { "build": { "dependsOn": ["^build"], "outputs": ["dist/**"] }, "test": {} } }turbo run build 只对变更及受影响的包重算,命中缓存则跳过,CI 大幅提速。
tsc / vite build 产出 ESM + CJS + .d.ts;changesets 管理版本与 CHANGELOG;peerDependencies 声明 React 版本避免重复打包。Monorepo 让多包工程「一次提交、原子联动」,pnpm workspace 管依赖、Turborepo 管任务缓存、changesets 管发布,三者构成 React 组件库工程化的标准栈。