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

前端多个相互引用的工程,怎么保持引用最新代码

  •  
  •   msmmbl · 2020-03-12 15:29:04 +08:00 · 1760 次点击
    这是一个创建于 1724 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司自建了 gitlab 用于内部的代码管理。

    现在用两个前端 git 工程 A、B 由不同的人开发。A 是一些公共的模块,B 引用了 A 中的模块,通过在package.json中:

    {
      "dependencies": {
         "aModule": "git+ssh://[email protected]:xxxx/xxxx"
      }
    }
    

    这种方式引用了工程 A 中的模块。

    平时工程 A 会经常有些 bug 要修改,问题是,A 改完后,怎么通知到 B 我这已经改了,需要运行npm install更新下。

    或者这样的场景的最佳实践是怎样的。

    第 1 条附言  ·  2020-03-12 16:13:27 +08:00
    似乎用 Git Subtree 才是正解?
    9 条回复    2020-03-31 13:07:24 +08:00
    terence4444
        1
    terence4444  
       2020-03-12 16:15:59 +08:00 via iPhone
    git submodule 应该适用
    orzorzorzorz
        2
    orzorzorzorz  
       2020-03-12 16:19:32 +08:00
    或者直接把 a clone 下来,然后在 b 里 link 过去。
    dorentus
        3
    dorentus  
       2020-03-12 16:25:53 +08:00
    维护内部仓库,作正常的版本发布才是正解吧。严格按照 semver 发布版本。

    另外,你永远不知道队友或者你自己在解决一个 bug 之后会引入多少其它 bug,所以一定不能不经测试直接使用最新版本。
    msmmbl
        4
    msmmbl  
    OP
       2020-03-12 16:34:36 +08:00
    @dorentus 嗯,A 项目本身我们也有 pull request 机制确保 master 分支的代码的质量。问题是现在引用 A 项目的其他项目太多了,有时候 A 项目改个文案什么的,要通知到好多其他项目去做更新,不是很方便。
    whileFalse
        5
    whileFalse  
       2020-03-12 22:36:59 +08:00
    我有点疑惑,为啥 A 模块改文案需要所有依赖者同时更新? 如果模块本身只是提供文案,那应考虑将文案文件提取到静态资源中而不是硬编码到代码里。

    针对问题本身,最简单的办法就是在你们平时经常用到的 build 或者 run 命令里面加一个“&& npm update aModule”
    msmmbl
        6
    msmmbl  
    OP
       2020-03-13 10:07:02 +08:00
    @whileFalse ok,那就在部署之前,强制在所有项目中运行 npm update aModule
    msmmbl
        7
    msmmbl  
    OP
       2020-03-13 10:12:40 +08:00
    @whileFalse 不仅仅是文案,可能也会有功能的更改。比如一个 aModule 是一个公用的对话框,用于显示用户在我们系统中上传的所有图片,对这个对话框的修改,需要同步到所有引用这个对话框模块的其他项目。
    wenhai95
        8
    wenhai95  
       2020-03-13 13:23:01 +08:00 via Android
    用 lerna
    msmmbl
        9
    msmmbl  
    OP
       2020-03-31 13:07:24 +08:00
    @wenhai95 谢谢,研究了下,是要把多个 git 库改造成单个库。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1355 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 17:38 · PVG 01:38 · LAX 09:38 · JFK 12:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.