【发布时间】:2017-03-06 17:11:07
【问题描述】:
如果我的包有这些依赖项
{ "name": "my-package",
"dependencies": { "foobar":"~1.0.3", "baz":"2.0.9" }
而foobar 包有这些依赖
{ "name": "foobar",
"dependencies": { "baz":"^2.0.0" }
最新发布的baz 版本是2.1.0,第一次运行yarn 将在baz@2.1.0 中安装baz@2.1.0。
我如何强制 yarn 为 foobar 使用 baz@2.0.9 包?
我的理解是,使用npm shrinkwrap(也就是this question)可以做到这一点。
我的问题的总结可能是:Yarn 创建了可重复的、确定性的安装,但我如何自定义该安装?
【问题讨论】:
-
你们找到答案了吗?
-
@atomman 实际上我认为我在这个问题的基础上是错误的。 Yarn 已经确定我的顶级包版本号和另一个依赖项的子依赖项之间存在不兼容。所以它正确地决定为依赖提供它自己版本的库。
-
感谢您的回答。虽然我不确定我是否同意,因为 baz@2.0.9 会满足所有要求。虽然它可以被视为一个特性,即纱线总是为子模块提供最新的依赖关系。然而,我确实觉得 yarn 应该为这些情况提供依赖解决机制,但那是另一个讨论。 :)
-
@atomman 哦,是的,我同意你的看法(以及我的问题中的前提),但我认为我实际上遇到的真正问题与那个略有不同我在我的问题中描述了。
标签: node.js npm npm-shrinkwrap yarnpkg