Monorepo(mono = 单一,repo = 仓库)指的是:很多个相关项目(包、应用、库)放在同一个 Git 仓库里统一维护,而不是「一个仓库只装一个独立产品」。
常见特征包括:
- 多目录、多包:例如根目录下有
apps/*、packages/*、src等,各自可以是独立应用或可被复用的库。 - 工作区(workspace):用 Yarn/npm/pnpm workspaces 等,在一个仓库里装依赖、做链接,本地包之间可以直接
workspace:*引用。 - 一套基建:共用 ESLint、TS 配置、CI、构建脚本,改一次规则往往全仓受益。
- 协作方式:改接口时可以在同一次 MR/PR 里同时改调用方和实现,不用跨多个仓库对齐版本。
与之相对的是 multi-repo(多仓库):每个应用/库一个 Git 仓库,版本和发布通常靠发包、semver 协调。