我使用的库支持另一个具有广泛版本的库作为对等依赖项。不幸的是,工作区的子项目之一拉入了与使用库的子项目不同的版本。结果,它们最终需要不同的版本。
我正在尝试使用选择性分辨率来处理这个问题并强制它使用正确的版本(https://yarnpkg.com/lang/en/docs/selective-version-resolutions/),但我没有任何运气。
我可能误解了如何利用这些。
我当前的设置是我有一个根工作区,里面有这些孩子:Project A package.json(这是问题的根源):
dependencies: {
backbone.marionette: '2.4.1'
}
Run Code Online (Sandbox Code Playgroud)
项目 B package.json(这是有问题的应用程序):
dependencies: {
backbone.marionette: '1.8.8',
@organization/UILibrary: '0.0.22'
}
Run Code Online (Sandbox Code Playgroud)
@organization/UILibrary(在工作区之外) package.json 看起来像这样:
peerDependencies: {
backbone.marionette: ">= 1 < 3"
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,即使项目 B 不依赖于项目 A,当@organization/UILibrary 被拉入项目 B 时,它会根据它的需要获得 2.4.1 版的主干.marionette(而项目 B 的本地要求是 1.8.8)。
我尝试使用分辨率将项目 B package.json 更新为:
dependencies: {
backbone.marionette: '1.8.8',
@organization/UILibrary: '0.0.22'
},
{
"resolutions": {
"@organization/**/backbone.marionette": "1.8.8",
"@organization/backbone.marionette": "1.8.8",
"@organization/UILibrary/backbone.marionette: "1.8.8",
"@organization/UILibrary/**/backbone.marionette: '1.8.8"
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?基于对纱线问题及其一些选择性依赖 PR 的一些挖掘(参见https://github.com/yarnpkg/yarn/issues/4874),我相信这可能是由于 UILibrary 的作用域(有斜线) )。