在yarn工作区中,如何为子项目的依存关系强制解决方案?

时间:2019-01-09 23:53:29

标签: yarnpkg yarn-workspaces

我正在使用一个库,该库支持另一个版本广泛的对等依赖项库。不幸的是,工作区的一个子项目引入了与使用该库的子项目不同的版本。结果,它们最终需要不同的版本。

我正在尝试使用选择性分辨率来解决此问题,并强制其使用正确的版本(https://yarnpkg.com/lang/en/docs/selective-version-resolutions/),但我没有任何运气。

可能是我误会了如何利用它们。

我当前的设置是我有一个内部工作区,其中包含这些子级: 项目A package.json(这是问题的根源):

var player1 = prompt(" Welcome Player 1! Please Enter your name ");
alert(" Hello, " + player1 + ".");


var p1score1 = parseFloat(prompt(' Enter first score. '));
var p1score2 = parseFloat(prompt(' Enter second score. '));
var p1score3 = parseFloat(prompt(' Enter third score. '));

var p1avgScore = (p1score1 + p1score2 + p1score3) / 3;

console.log(" Congratulations " + player1 + ". Your scores are: " +
  p1score1 + ", " + p1score2 + ", " + p1score3 + ".");
console.log(" Your average score of all three games are: " +
  p1avgScore);

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

   dependencies: {
      backbone.marionette: '2.4.1'
   }

@ organization / UILibrary(位于工作空间外部)package.json如下所示:

  dependencies: {
         backbone.marionette: '1.8.8',
         @organization/UILibrary: '0.0.22'
   }

不幸的是,即使项目B不依赖于项目A,当@ organization / UILibrary被拉入项目B时,它也获得了所需的marionette marionette版本2.4.1(而项目B的本地需求为1.8.8)。 )。

我尝试使用分辨率是将Project B package.json更新为:

  peerDependencies: {
       backbone.marionette: ">= 1 < 3"
  }

有什么想法吗?基于对纱线问题的一些了解以及对它们的一些选择性依赖关系PR(请参阅https://github.com/yarnpkg/yarn/issues/4874),我认为这可能是由于UILibrary具有范围(带有斜线)的事实所致。

1 个答案:

答案 0 :(得分:0)

我最近遇到了类似的事情;我发现resolutions仅在根package.json中有效。尝试将resolutions移动到那里,而不要移动到程序包B中。