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
。
提示与技巧
- 如果您定义了无效的解决方案(例如包名无效),您将收到警告
- 如果您的分辨率版本或范围无效,您将收到警告。
- 如果您的分辨率版本或范围与原始版本范围不兼容,您将收到警告。
限制和注意事项
- 嵌套包可能无法正常工作。
- 某些边缘情况可能无法正常工作,因为这是一项相当新的功能。