跳到正文

单仓多项目

Monorepo

中级通用

单仓多项目(Monorepo)是把多个相关项目放在同一个版本控制仓库中管理的方式。它解决网站、后台和共享组件分散在不同仓库时,跨项目修改难以一起查看、测试和提交的问题。

你可能会说:「我想把网站、管理后台和共用组件放在一起,让 AI 修改共用代码时能同时检查两边。」

读之前建议先了解

动手看看

星河工作台 · 代码检查
分支:button-api
一个仓库:xinghe
三个独立仓库
apps/web网站:更新按钮调用
apps/admin后台:更新按钮调用
packages/ui共享按钮:variant → tone
这里列出各仓库的对应目录。
关联改动 · 3 个文件
Button.tsx将 variant 属性改为 tone
网站 / 后台调用处两个项目同步使用新属性
同一个差异视图里检查接口和调用方。
需要在三个仓库间对照改动与版本。
测试结果预览
共享按钮单元测试通过
网站与后台构建通过
配置好的任务同时验证三个项目,使用当前仓库代码。
各仓库分别验证;应用测试需接入共享包的新版本。
提交范围预览
一次提交 · 3 个项目更新按钮接口及网站、后台调用方。一起查看,也能一起回退。
三次提交 · 3 个仓库共享包、网站、后台分别提交;用关联链接协调版本和合并顺序。
工作区干净尚未修改按钮接口,没有待检查或提交的关联改动。
仓库组织方式
修改共享按钮接口
检查步骤

悬停目录行或用 Tab 聚焦,认认三个项目的位置。再切换仓库方式和检查步骤,比较这次共享按钮修改如何被查看、测试和提交。

单仓不是把三个项目合成一个应用,而是让它们共用版本控制边界。共享接口与两个调用方的修改可以放在同一份差异、同一次提交里。

要点

  1. 1

    同一个仓库放多个项目

    比如你做一个产品,用户网站和管理后台各有自己的代码,共用的界面组件也单独放一处。它们都在同一个 Git 仓库里,但仍然可以有各自的构建命令和发布方式。

  2. 2

    跨项目修改能一起检查

    如果你改了共用组件的接口,网站和后台可能都要跟着改。放在一个仓库里,AI Agent 能在同一次修改中查看调用处,团队也能在同一个合并请求里审查这些变化。

  3. 3

    项目边界仍要说清楚

    同仓不等于所有代码混在一起。我们通常会标明每个项目的位置、依赖关系,以及各自怎么测试和构建;否则 AI 虽然找得到文件,也容易改到无关项目,或者漏掉受影响的测试。

容易混淆的地方

单仓多项目说的是仓库怎么组织,不等于把几个功能目录放进一个应用:网站和后台即使共用仓库,也可以分别运行、部署。它也不同于多仓库管理,后者让每个项目有独立仓库;跨项目改动就需要分别提交和协调。选单仓不会自动实现代码共享或独立部署。

什么时候用

适合用

  • 网站、后台和共享组件经常一起改,你想让一次代码审查覆盖相关变化。
  • 几个相关应用由同一团队维护,你想让 AI Agent 在同一个仓库里查找依赖和运行测试。
  • 产品有网页端和服务端,两边常同步调整接口,你想更容易追踪一项需求涉及的改动。

不适合用

  • 你只有一个独立网站,没有其他项目要协作;普通单项目仓库就够了。
  • 几个项目由不同组织维护,访问权限和发布流程都要严格隔离;分别建仓库更合适。
  • 你只是想复用一个稳定的通用工具库,使用独立仓库和版本化依赖可能更省事。

练一练

你维护用户网站、管理后台和两边共用的表单组件。一次需求常要同时修改三处,但网站和后台仍要分别上线。哪种安排最符合单仓多项目?

让 AI 帮你做

请按单仓多项目组织这个产品:用户网站、管理后台和共享组件放在同一个 Git 仓库,标明各自目录、依赖关系、测试与构建命令。网站和后台保持独立部署;改共享组件时,检查两边受影响的代码和测试。

接下来学什么