目前我这边有两个 umi 项目,这两个项目之间有大量重复的代码,包括 ts 类型,公共组件,页面,service ,现在我想要把这两个项目之间公共的部分拆出来, 想请教一下各位大佬有什么方案吗。 目前实践过 monorepo, 但是发现 umi 的 msfu 对 monorepo 支持比较差。
1
ryougifujino 2022-07-11 18:12:30 +08:00
虽然不太了解 umi ,搜了一下 msfu 就是打包用的吧? monorepo 和打包工具关系不大,现在一般是用 pnpm 的 workspace 来实现 monorepo 。公共函数可以单独提出一个 package ,这是最简单的。公共组件也可以单独提出一个 package ,和其他 package 的 React 等依赖保持一致就行了。
|
2
zficode OP @ryougifujino 就两个 umi 项目提取出来的不仅仅是公共组件,还有页面
|
3
ryougifujino 2022-07-12 10:02:04 +08:00
@zficode #2 页面和组件一样的啊,提出来的页面 package 的 peerDependencies 和这两个项目的依赖一致就行了。比如你单独创建了一个页面的 package ,它依赖了 umi1.0 ,React 18 (这两个项目也是用的这两个同版本的依赖)。然后将它加入页面 package 的 devDependencies (为了调试),再加入 peerDependencies 。最终这两个项目引用这个页面 package 里的组件就行了,因为它们的依赖是一致的,所以不会有任何问题。
|
4
sjhhjx0122 2022-07-12 10:51:31 +08:00
pnpm workspace 就行了,只要依赖一致就 ok 了
|
5
zficode OP @ryougifujino emmmmm, 太麻烦了,目前的方案是 git submodule, 将公共的代码放到一个单独的仓库里面去
|