前端 multi-repo 项目的改造

2022-07-11 17:49:41 +08:00
 zficode

目前我这边有两个 umi 项目,这两个项目之间有大量重复的代码,包括 ts 类型,公共组件,页面,service ,现在我想要把这两个项目之间公共的部分拆出来, 想请教一下各位大佬有什么方案吗。 目前实践过 monorepo, 但是发现 umi 的 msfu 对 monorepo 支持比较差。

995 次点击
所在节点    前端开发
5 条回复
ryougifujino
2022-07-11 18:12:30 +08:00
虽然不太了解 umi ,搜了一下 msfu 就是打包用的吧? monorepo 和打包工具关系不大,现在一般是用 pnpm 的 workspace 来实现 monorepo 。公共函数可以单独提出一个 package ,这是最简单的。公共组件也可以单独提出一个 package ,和其他 package 的 React 等依赖保持一致就行了。
zficode
2022-07-12 09:47:42 +08:00
@ryougifujino 就两个 umi 项目提取出来的不仅仅是公共组件,还有页面
ryougifujino
2022-07-12 10:02:04 +08:00
@zficode #2 页面和组件一样的啊,提出来的页面 package 的 peerDependencies 和这两个项目的依赖一致就行了。比如你单独创建了一个页面的 package ,它依赖了 umi1.0 ,React 18 (这两个项目也是用的这两个同版本的依赖)。然后将它加入页面 package 的 devDependencies (为了调试),再加入 peerDependencies 。最终这两个项目引用这个页面 package 里的组件就行了,因为它们的依赖是一致的,所以不会有任何问题。
sjhhjx0122
2022-07-12 10:51:31 +08:00
pnpm workspace 就行了,只要依赖一致就 ok 了
zficode
2022-07-13 15:54:52 +08:00
@ryougifujino emmmmm, 太麻烦了,目前的方案是 git submodule, 将公共的代码放到一个单独的仓库里面去

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/865485

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX