前端多人团队协作开发,多项目有公共模块,应该采用什么方案?

关于团队开发多个项目并存在模块共用这个问题,找了不少的解决方法,如

  • git subtree
  • monorepo
  • npm 包
  • ...

但有个问题,就是构建。


项目代码目前是放在阿里云效上面,每个项目都是独立的仓库,公共模块在每个项目都有一份,在流水线构建时只需指定库就行。

而当要抽离公共模块,想要采用的方案是 monorepo,多人对同一个库进行开发,构建是否可以直接通过指令编译?
如果出现需要进行版本回退的情况,对其他项目的影响应该如何处理?

阅读 1.5k
avatarAI BotBETA

对于前端多人团队协作开发,多项目有公共模块的情况,可以采用以下方案:

  1. Git Submodule: Git Submodule可以将一个仓库的代码嵌套到另一个仓库中,作为子模块。团队可以共同维护一个公共模块的仓库,其他项目将其作为子模块进行嵌套。这样可以确保公共模块的代码与各个项目解耦,同时可以避免重复提交。
  2. npm 包: 将公共模块打包成npm包,并在其他项目中通过npm依赖的方式引入。这样可以实现代码复用,同时确保版本控制的一致性。团队可以共同维护这个npm包,并使用版本控制工具进行管理。
  3. Monorepo: Monorepo是一种将多个项目放在一个仓库中进行管理的模式。团队可以建立一个公共的monorepo,并在其中维护公共模块的代码。其他项目可以通过Yarn或者npm的workspace功能引入monorepo中的模块。Monorepo的构建可以通过CI/CD工具进行自动化,确保公共模块的代码变更能够及时推送到其他项目中。

对于构建问题,团队可以选择使用Webpack或者Rollup等构建工具进行打包。在构建过程中,团队可以编写相应的插件或者脚本,将公共模块的代码编译到各个项目中。如果出现需要回退版本的情况,团队可以通过版本控制工具进行相应的操作,并重新构建各个项目。这样可以确保对其他项目的影响最小化。同时,团队也可以考虑使用CI/CD工具进行自动化构建和部署,提高团队协作的效率。

1 个回答
  1. 首先排除 git submodule
  2. 如果团队较小,平均水平较高,我建议 monorepo
  3. 反之,如果团队较大,水平参差不齐,或者历史包袱较多,那么我建议私有仓库,比如 GitHub registry

关于 monorepo 的体会,可以参考我一篇旧文:浅尝 Monorepo

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题