- 单一仓库
monorepo/
├── apps/ # 应用项目
│ ├── web-app/
│ └── mobile-app/
├── packages/ # 共享库
│ ├── utils/
│ └── ui-components/
└── package.json # 可能使用工具管理依赖pnpm workspace 是 pnpm 提供的一种多包管理机制,用于声明项目下哪些属于工作区的一部分
yaml
packages:
- play # 存放我们组件测试的时候的代码
- docs # 存放我们组件文档的
- "packages/**"- 共享依赖
依赖可以提升到仓库根目录(如node_modules共享),减少重复安装和版本冲突。
npmrc配置shamefully-host = true,将依赖提升到node_modules下,匹配依赖路径时优先匹配,实现依赖共享。- 只提升单例的包(如
react、vue)或高频共用工具(如lodash)
- 统一工具链
使用统一的构建、测试、发布工具(如 Lerna、Nx、Turborepo、Rush 等)。 - 原子提交
一次提交可以跨多个项目,便于协同修改(例如同时更新前端和后端 API)。