V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zficode
V2EX  ›  前端开发

前端 multi-repo 项目的改造

  •  
  •   zficode · 2022-07-11 17:49:41 +08:00 · 985 次点击
    这是一个创建于 645 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    5 条回复    2022-07-13 15:54:52 +08:00
    ryougifujino
        1
    ryougifujino  
       2022-07-11 18:12:30 +08:00
    虽然不太了解 umi ,搜了一下 msfu 就是打包用的吧? monorepo 和打包工具关系不大,现在一般是用 pnpm 的 workspace 来实现 monorepo 。公共函数可以单独提出一个 package ,这是最简单的。公共组件也可以单独提出一个 package ,和其他 package 的 React 等依赖保持一致就行了。
    zficode
        2
    zficode  
    OP
       2022-07-12 09:47:42 +08:00
    @ryougifujino 就两个 umi 项目提取出来的不仅仅是公共组件,还有页面
    ryougifujino
        3
    ryougifujino  
       2022-07-12 10:02:04 +08:00
    @zficode #2 页面和组件一样的啊,提出来的页面 package 的 peerDependencies 和这两个项目的依赖一致就行了。比如你单独创建了一个页面的 package ,它依赖了 umi1.0 ,React 18 (这两个项目也是用的这两个同版本的依赖)。然后将它加入页面 package 的 devDependencies (为了调试),再加入 peerDependencies 。最终这两个项目引用这个页面 package 里的组件就行了,因为它们的依赖是一致的,所以不会有任何问题。
    sjhhjx0122
        4
    sjhhjx0122  
       2022-07-12 10:51:31 +08:00
    pnpm workspace 就行了,只要依赖一致就 ok 了
    zficode
        5
    zficode  
    OP
       2022-07-13 15:54:52 +08:00
    @ryougifujino emmmmm, 太麻烦了,目前的方案是 git submodule, 将公共的代码放到一个单独的仓库里面去
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2017 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:16 · PVG 00:16 · LAX 09:16 · JFK 12:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.