=2.2.0 =1.7.2 我认为我应该 jquery@-6ren">
gpt4 book ai didi

jquery - yarn 安装了 2 个版本的 jquery。为什么,除了直接编辑yarn.lock之外,如何修复它?

转载 作者:行者123 更新时间:2023-12-03 22:50:13 25 4
gpt4 key购买 nike

yarn add foo
yarn add jquery-form
yarn add jquery@2.2.4

foo声明依赖"jquery@>=2.2.0 <3.0.0" , jquery-form声明jquery@>=1.7.2

我认为我应该 jquery@2.2.4 ,但这是我的yarn.lock

jquery@2.2.4, "jquery@>=2.2.0 <3.0.0":
version "2.2.4"
resolved "..."

jquery@>=1.11.1, jquery@>=1.7.2:
version "3.3.1"
resolved ".."

所以,在生产中jquery-form得到3.3.1foo得到2.2.4 。我现在有 2 个不同的 jquery,这不好:)

我用

修复了它
jquery@2.2.4, jquery@>=1.11.1, jquery@>=1.7.2, "jquery@>=2.2.0 <3.0.0":
version "2.2.4"
resolved "..."

一切都在 2.2.4 上得到解决现在。但我yarn.lock不是您应该手动编辑的内容。

我该如何解决?

最佳答案

TL;TR:package.json中的“决议”:{“jquery”:“2.2.4”}

原始的npm(3.0之前)用于以树模式(某种并排)安装所有依赖项。在过去,如果模块 A 依赖于 jquery-1 并且模块 B 依赖于 jquery-2 npm 做了以下事情

node_modules/A/node_modules/jquery-1
node_modules/B/node_modules/jquery-2

这对于服务器来说可以,但对于客户端来说不行。因此,他们使用了 bower 来生成扁平依赖项:每个库只有一个版本。解决所有冲突是开发人员的责任。

现在 bower 已被弃用,npm (3+) 和 yarn 都可以在平面模式 id 中解析依赖项,但如果 yarn 无法做到这一点——您又拥有两个版本的 jquery

可以强制 yarn 使用平面模式:yarn --flat。它会询问您每一个冲突:

info Unable to find a suitable version for "jquery", please choose one by typing one of the numbers below:
1) "jquery@2.2.4, jquery@>=2.2.0" which resolved to "2.2.4"
2) "jquery@>=1.7.2, jquery@>=1.11.1, jquery@>=1.7.2" which resolved to "3.3.1"

我不知道为什么不能解析为2.2.4(我相信我们应该问semver作者)),但是点击2 此处,yarn 会将您的选择保存到 package.json(而不是 yarn.lock!)。

"author": "Foo",
"license": "UNLICENSED",
"resolutions": {
"jquery": "2.2.4"
}

问题已解决。最好对所有客户端代码使用yarn --flat

关于jquery - yarn 安装了 2 个版本的 jquery。为什么,除了直接编辑yarn.lock之外,如何修复它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48950732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com