我们公司有一些Web应用程序,这些应用程序依赖于一长串内部创建和托管的npm包(我们使用JFrog Artifactory),每个包都有自己的依赖项(等等).每当修复错误或在低级别包中实现功能时,当前进程需要开发人员检查他们的更改,等待CICD构建完成并测试运行,更新父包,并冲洗/重复所有链的方式(这可能是一个非常漫长的过程).
这可能不是一个独特的情况,但它会极大地影响我们的生产力,并鼓励单片程序包开发限制更新程序包的数量,而不是正确的代码分离.
我只能想到两个解决方案:
1)更新Web应用程序以直接在package.json中使用传递依赖项.然而,这打破了"封装",因为Web应用程序不应该知道直接依赖关系如何管理其作业.如果直接依赖性稍后使用某些其他传递依赖性,则不应该将Web应用程序引用到现在不相关的包.
2)修改Web应用程序的package-lock.json以指向新版本的传递依赖项.然而,这似乎只是临时工作,因为合并冲突或直接依赖的新安装往往会恢复这些更改.
我意识到答案可能是优化构建/发布过程,减少痛苦和手动,但我希望其他人可能遇到了不同的解决方案.
仅供参考 - 默认情况下,所有依赖项都以"〜"作为版本前缀安装.