我正在使用一个库,该库支持另一个具有广泛版本的库作为对等依赖项。不幸的是,工作区的一个子项目引入了与使用该库的子项目不同的版本。结果,它们最终需要不同的版本。
我正在尝试使用选择性解析来处理这个问题并强制它使用正确的版本(https://yarnpkg.com/lang/en/docs/selective-version-resolutions/),但是我没有成功。
我可能误解了如何利用它们。
我的当前设置是:我有一个根工作区,其中包含以下子项目:
Project A package.json(这是问题的来源): dependencies: {
backbone.marionette: '2.4.1'
}
项目B的package.json文件(该应用程序存在问题):
Translated text:Project B's package.json file (the application with issues):
dependencies: {
backbone.marionette: '1.8.8',
@organization/UILibrary: '0.0.22'
}
@organization/UILibrary(在工作区之外)的package.json如下:
peerDependencies: {
backbone.marionette: ">= 1 < 3"
}
不幸的是,尽管项目B不依赖项目A,但当@organization/UILibrary被引入到项目B中时,它会获取backbone.marionette版本2.4.1作为需要的版本(而在项目B本地需要的版本是1.8.8)。
我尝试使用resolutions来更新项目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"
}
有任何想法吗?基于对Yarn问题和某些选择性依赖PR的挖掘(请参见https://github.com/yarnpkg/yarn/issues/4874),我认为这可能是由于UILibrary被作用域限制(有斜杠)所致。