我正在使用一个库,它支持另一个具有广泛版本的库作为对等依赖项。不幸的是,工作区中的一个子项目获得了与使用库的子项目不同的版本。因此,它们最终需要不同的版本。
我试图使用选择性的决议来处理这个问题,并强迫它使用正确的版本(https://yarnpkg.com/lang/en/docs/selective-version-resolutions/),但我没有任何运气。
很可能我误解了如何利用这些。
我目前的设置是,我有一个根工作区,其中包含这些子空间: Project、package.json (这是问题的根源):
dependencies: {
backbone.marionette: '2.4.1'
}项目B package.json (它是有问题的应用程序):
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)。
我使用决议的尝试是将项目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"
}有什么想法吗?基于对纱线问题的一些挖掘和一些选择性依赖PRs (参见https://github.com/yarnpkg/yarn/issues/4874),我相信这可能是由于UILibrary被限定了范围(有一个斜杠)。
发布于 2019-04-19 17:25:56
最近我遇到了类似的情况;我发现resolutions只在根package.json中工作。尝试将resolutions移到那里而不是B包中。
https://stackoverflow.com/questions/54120149
复制相似问题