如何保持纱线工作区依赖关系同步

Posted

技术标签:

【中文标题】如何保持纱线工作区依赖关系同步【英文标题】:How do I keep yarn workspaces dependencies in sync 【发布时间】:2019-06-27 02:57:18 【问题描述】:

假设我的yarn workspaces 中有多个包。

@mycompany/utils
@mycompany/app
@mycompany/serv

假设这些包中的每一个在lodash 上都有一个dependency。我想确保它们都具有相同的lodash 版本。

有没有办法在每个 package.json 中做到这一点?

【问题讨论】:

如果这仍然在议程上,如何将 lodash 添加到根 package.json:yarn add lodash -W? 是的,我一开始就这样做了,然后意识到将它添加到根 package.json 并不是一个很好的解决方案,因为您以后将无法分辨哪个包具有哪个依赖项): 我目前面临着类似的问题。如果你解决了,你是怎么解决的? 不幸的是..我还没有解决它): 我想研究的一件事可能是使用 dependabot.com,因为它已被 Github 收购并且现在是免费的,因此可以帮助使所有依赖项保持最新 【参考方案1】:

使用syncpack 强制monorepo 中的所有子包使用每个依赖项的相同版本。

安装在根 package.json 中:

yarn add --dev -W syncpack

运行(推荐:使用 husky 在每次提交时运行):

syncpack list-mismatches

更多信息:https://github.com/JamieMason/syncpack

【讨论】:

以上是关于如何保持纱线工作区依赖关系同步的主要内容,如果未能解决你的问题,请参考以下文章

依赖关系在错误的地方与纱线

如何解决 cabal 中损坏的依赖关系?

如何在具有纱线工作空间的 monorepo 中从 nodejs 项目构建 docker 映像

领域驱动设计:如何设计具有依赖关系的关系聚合

带有纱线工作空间的通用依赖库版本

纱线工作区没有建立本地依赖