多个项目共享代码,submodule 各自版本、monorepo 统一版本,取舍看团队边界。

实践流程

# 子模块:把外部仓库挂为固定版本
git submodule add https://github.com/foo/lib libs/foo
git submodule update --init --recursive

# monorepo:多包同仓,靠 workspace 管理

要点速览

  • submodule 适合引用稳定第三方,锁定某 commit,互不干扰。
  • monorepo 适合强耦合的内部多包,改一处全仓可见。
  • submodule 的痛点是 clone 忘加 --recursive,新人常踩。
依赖共享选 submodule 还是 monorepo,本质是「版本边界」划在哪。