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

前端如果跨项目共享代码?

  •  
  •   elone · 2022-03-11 09:57:38 +08:00 · 3506 次点击
    这是一个创建于 1017 天前的主题,其中的信息可能已经有所发展或是发生改变。

    v2 的各位大佬,求问一下前端多项目,有什么好的方案可以共享代码?

    就比如说 ng 或者 react 或者 vue 。假设,组内有 2 个前端,一个用 ng 做桌面 web 端,一个做移动端(分为两个项目)。但是因为 service 、utils 、config 配置文件或者 一些 api 封装之类的代码几乎是 100%可以复用的。桌面端跟移动端只是 ui 层面有所不同,其它逻辑是完全一样的。想问下目前有什么方案比较好实现这种复用。

    我知道有 npm 这种方案,但是感觉用起来有点麻烦,尤其是代码变动比较频繁的时候。总是不断的修改、发包、重新引入,版本控制。复杂度一下子就起来了。

    搜了一下,发现现在大多用的是 monorepo ,无奈没之方面经验。有 lerna ,rush ,nx 这几种方案可以选,不知道选哪个,有哪些坑?

    请各位指导一下,谢谢。

    21 条回复    2022-03-12 21:04:21 +08:00
    LiHaiWordGe
        1
    LiHaiWordGe  
       2022-03-11 10:00:28 +08:00   ❤️ 2
    git submodule 可行?
    nicebird
        2
    nicebird  
       2022-03-11 10:22:47 +08:00
    不太了解前端,放一个库里不行吗?
    maichael
        3
    maichael  
       2022-03-11 10:27:52 +08:00
    之前看过像 https://github.com/teambit/bit 这种的,不知道你适用不适用。
    xiangyuecn
        4
    xiangyuecn  
       2022-03-11 10:31:43 +08:00
    永不过时:Ctrl+C Ctrl+V ,人肉搬运
    seki
        5
    seki  
       2022-03-11 10:33:38 +08:00
    如果没有什么一定需要跨项目的,可以写到一起

    monorepo 可以解决相对路径引用太复杂的问题,也方便组织代码,但不是必须的。

    lerna 之类的是便于统一执行命令,没有发布包之类的需求也可以不用,直接裸 yarn/npm workspaces 就行
    Torpedo
        6
    Torpedo  
       2022-03-11 10:34:03 +08:00
    用 monorepo ,然后上 pnpm
    zhouyg
        7
    zhouyg  
       2022-03-11 10:56:43 +08:00
    pnpm workspace 就可以了,体验很好
    tq0106
        8
    tq0106  
       2022-03-11 10:58:32 +08:00
    通用文件打包成库放 npm 上
    WhiteHu
        9
    WhiteHu  
       2022-03-11 10:59:44 +08:00
    monorepo 正解
    MinonHeart
        10
    MinonHeart  
       2022-03-11 12:18:40 +08:00
    如果只是复用,不用 npm 发布的话。全放一个仓库就行了,算是半个 monorepo
    git submodule 不太行,麻烦
    npm packages 改的频繁,觉得也很麻烦
    MinonHeart
        11
    MinonHeart  
       2022-03-11 12:19:58 +08:00
    接上文:这种不需要 lerna 来管理,用 npm7 的 workspace 按目录或者 package 分就行了
    WispZhan
        12
    WispZhan  
       2022-03-11 13:05:04 +08:00 via Android
    分 npm 包,做库用,上 ci
    Tonni
        13
    Tonni  
       2022-03-11 13:38:40 +08:00
    用过 npm 的方案,把东西丢到一个 repo 里,npm 安装的时候直接从 repo 安装就好了,也可以指定特定的 branch 或者 commit id ,还是挺方便的。
    jin5354
        14
    jin5354  
       2022-03-11 14:08:00 +08:00
    没有 npm 包发布需求,连 lerna 都不用引。
    你就直接放到一个仓库里就行,src 下面放仨文件夹,pc ,mobile 和 common ,共享逻辑写 common 里,pc 和 mobile 随便引。
    dylanxult
        15
    dylanxult  
       2022-03-11 17:15:36 +08:00
    retool 这个工具是不是挺合适
    m1911star
        16
    m1911star  
       2022-03-11 17:17:38 +08:00
    monorepo nx
    Mutoo
        17
    Mutoo  
       2022-03-11 17:20:01 +08:00 via iPhone
    webpack module federation 可以,在项目中实践过。可以把 webpack 打的包共享给不同的项目使用。
    DSKcpp
        18
    DSKcpp  
       2022-03-11 19:34:22 +08:00
    pnpm 天下第一
    aleen42
        19
    aleen42  
       2022-03-11 19:51:07 +08:00 via Android
    感覺 npm 或者 git submodules 都沒 single module 來得直接,現在都很流行一個 repo 包含多個 package
    kobezone
        20
    kobezone  
       2022-03-12 13:22:22 +08:00 via Android
    gitsubmodules 更好管控权限 个人更推荐 大团队配合 lerna+monorepo 是主流 小的项目可以采用
    elone
        21
    elone  
    OP
       2022-03-12 21:04:21 +08:00 via iPhone
    我用了 pnpm workspace 。感觉挺好的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2886 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 12:54 · PVG 20:54 · LAX 04:54 · JFK 07:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.