情境:
我们有一个依赖结构,这样就有3个独立的私人回购:
两种服务都需要使用libA(共享的私有库)。此外,serviceA在devDependencies中具有serviceB用于测试。树的直观表示如下所示。
serviceA ---> libA
|--> serviceB ---> libA
所有私有存储库都列在package.json中,使用SSH克隆
git+ssh://git@github.com:{ORG}/{repo}.git
问题:
我们有很多场景需要同时在所有3个回购中更改代码(通过创建分支和PR)。为了使测试通过,必须使用指定的分支克隆所有repos,如果不是,则使用默认值。在本地运行测试时,我们将手动sym链接deps,或使用npm link。
在CI中运行serviceA的测试时,可以运行预构建脚本来编辑带有新分支的package.json(对于libA和serviceB)。不幸的是,这并没有解决这样一个事实,即需要编辑serviceB的deps,以便在安装libA时它使用正确的新分支。
最好的方法是什么?