4. Selective dependency resolutions(选择性依赖项解析)

4.选择性依赖分辨率

Yarn支持选择性版本解决方案,它允许您通过文件中的resolutions字段在您的依赖关系中定义自定义软件包版本package.json。通常,这需要在yarn.lock文件中进行手动编辑。

你为什么想做这个?

  • 您可能依赖于不经常更新的软件包,这取决于另一个进行了重要升级的软件包。在这种情况下,如果您的直接依赖项指定的版本范围不包含新的子依赖项版本,那么您就等待author。

  • 您项目的子依赖项获得了重要的安全更新,您不希望等待直接依赖项发布最低版本更新。

  • 你依赖一个无人维护,但工作包和其中一个依赖项得到升级。你知道升级不会破坏你的东西,你也不想分叉你所依赖的包,只是为了更新次要依赖。

  • 您的依赖性定义了一个广泛的版本范围,并且您的子依赖关系刚刚得到了一个有问题的更新,因此您希望将其固定到较早的版本。

如何使用它?

添加一个resolutions字段到你的package.json文件并定义你的版本覆盖:

package.json

{ "name": "project", "version": "1.0.0", "dependencies": { "left-pad": "1.0.0", "c": "file:../c-1", "d2": "file:../d2-1" }, "resolutions": { "d2/left-pad": "1.1.1", "c/**/left-pad": "1.1.2" } }

然后运行yarn install

提示与技巧

  • 如果您定义了无效的解决方案(例如包名无效),您将收到警告

  • 如果您的分辨率版本或范围无效,您将收到警告。

  • 如果您的分辨率版本或范围与原始版本范围不兼容,您将收到警告。

限制和注意事项

  • 嵌套包可能无法正常工作。

  • 某些边缘情况可能无法正常工作,因为这是一项相当新的功能。