公司自建了 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
terence4444 2020-03-12 16:15:59 +08:00 via iPhone
git submodule 应该适用
|
2
orzorzorzorz 2020-03-12 16:19:32 +08:00
或者直接把 a clone 下来,然后在 b 里 link 过去。
|
3
dorentus 2020-03-12 16:25:53 +08:00
维护内部仓库,作正常的版本发布才是正解吧。严格按照 semver 发布版本。
另外,你永远不知道队友或者你自己在解决一个 bug 之后会引入多少其它 bug,所以一定不能不经测试直接使用最新版本。 |
4
msmmbl OP @dorentus 嗯,A 项目本身我们也有 pull request 机制确保 master 分支的代码的质量。问题是现在引用 A 项目的其他项目太多了,有时候 A 项目改个文案什么的,要通知到好多其他项目去做更新,不是很方便。
|
5
whileFalse 2020-03-12 22:36:59 +08:00
我有点疑惑,为啥 A 模块改文案需要所有依赖者同时更新? 如果模块本身只是提供文案,那应考虑将文案文件提取到静态资源中而不是硬编码到代码里。
针对问题本身,最简单的办法就是在你们平时经常用到的 build 或者 run 命令里面加一个“&& npm update aModule” |
6
msmmbl OP @whileFalse ok,那就在部署之前,强制在所有项目中运行 npm update aModule
|
7
msmmbl OP @whileFalse 不仅仅是文案,可能也会有功能的更改。比如一个 aModule 是一个公用的对话框,用于显示用户在我们系统中上传的所有图片,对这个对话框的修改,需要同步到所有引用这个对话框模块的其他项目。
|
8
wenhai95 2020-03-13 13:23:01 +08:00 via Android
用 lerna
|