首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在纱线工作区中,如何强制解决子项目的依赖性?

在纱线工作区中,如何强制解决子项目的依赖性?
EN

Stack Overflow用户
提问于 2019-01-09 23:53:29
回答 1查看 10.8K关注 0票数 19

我正在使用一个库,它支持另一个具有广泛版本的库作为对等依赖项。不幸的是,工作区中的一个子项目获得了与使用库的子项目不同的版本。因此,它们最终需要不同的版本。

我试图使用选择性的决议来处理这个问题,并强迫它使用正确的版本(https://yarnpkg.com/lang/en/docs/selective-version-resolutions/),但我没有任何运气。

很可能我误解了如何利用这些。

我目前的设置是,我有一个根工作区,其中包含这些子空间: Project、package.json (这是问题的根源):

代码语言:javascript
复制
   dependencies: {
      backbone.marionette: '2.4.1'
   }

项目B package.json (它是有问题的应用程序):

代码语言:javascript
复制
  dependencies: {
         backbone.marionette: '1.8.8',
         @organization/UILibrary: '0.0.22'
   }

@organization/UILibrary (它位于工作区之外) package.json如下所示:

代码语言:javascript
复制
  peerDependencies: {
       backbone.marionette: ">= 1 < 3"
  }

不幸的是,即使项目B不依赖于项目A,当@organization/UILibrary被拖到项目B中时,它会获得backbone.marionette版本2.4.1,因为它是必需的(而项目B的本地需求则是1.8.8)。

我使用决议的尝试是将项目B package.json更新为:

代码语言:javascript
复制
   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被限定了范围(有一个斜杠)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-19 17:25:56

最近我遇到了类似的情况;我发现resolutions只在根package.json中工作。尝试将resolutions移到那里而不是B包中。

票数 55
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54120149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档