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

2020-03-12 15:29:04 +08:00
 msmmbl

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

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

{
  "dependencies": {
     "aModule": "git+ssh://git@xxx.com:xxxx/xxxx"
  }
}

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

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

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

1755 次点击
所在节点    前端开发
9 条回复
terence4444
2020-03-12 16:15:59 +08:00
git submodule 应该适用
orzorzorzorz
2020-03-12 16:19:32 +08:00
或者直接把 a clone 下来,然后在 b 里 link 过去。
dorentus
2020-03-12 16:25:53 +08:00
维护内部仓库,作正常的版本发布才是正解吧。严格按照 semver 发布版本。

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

针对问题本身,最简单的办法就是在你们平时经常用到的 build 或者 run 命令里面加一个“&& npm update aModule”
msmmbl
2020-03-13 10:07:02 +08:00
@whileFalse ok,那就在部署之前,强制在所有项目中运行 npm update aModule
msmmbl
2020-03-13 10:12:40 +08:00
@whileFalse 不仅仅是文案,可能也会有功能的更改。比如一个 aModule 是一个公用的对话框,用于显示用户在我们系统中上传的所有图片,对这个对话框的修改,需要同步到所有引用这个对话框模块的其他项目。
wenhai95
2020-03-13 13:23:01 +08:00
用 lerna
msmmbl
2020-03-31 13:07:24 +08:00
@wenhai95 谢谢,研究了下,是要把多个 git 库改造成单个库。

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

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

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

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

© 2021 V2EX