首页 > 解决方案 > 纱线的嵌套依赖项解析未显示在 yarn.lockfile 中

问题描述

我正在使用解决方案来解决来自嵌套依赖项 (@dep/xyz) 的漏洞。嵌套依赖使用的是存在漏洞的 axios 0.21.1。我应该升级到它上面的任何兼容版本。

当我将它添加到如下分辨率时,我没有在 yarn.lock 文件中看到嵌套依赖项的更新。请指教。

下面是我的 package.json 文件

包.json

{
 "name" : "xyz",
 dependencies: {
     "@dep/xyz" : "2.3.4",
     "axios": "^0.21.2"
 },
 "resolutions": {
    "**/**/axios": "^0.21.2"
  }
}

yarn.lock 在上面的 yarn install 之后创建

# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1

axios@^0.21.1, axios@^0.21.2:
  version "0.21.4"
  resolved "https:..."
  integrity sha1-123...=
  dependencies:
    follow-redirects "^1.14.0"

"@dep/xyz@2.3.4":
  version "2.3.4"
  resolved "https:..."
  integrity sha1-123...=
  dependencies:
    "@x/d1" "0.2.2"
    "@y/d2" "0.9.2"
    axios "^0.21.1"

标签: npmpackage.jsonyarn-lock.json

解决方案


对于初学者,您不需要进行任何分辨率固定。@dep/xyz@2.3.4 正在使用“^0.21.1”的 semver 规范引入 axios。在这种情况下,它将接受 >=0.21.1 和 <0.22.0 的任何版本。你只需要使用 yarn 来更新正在解析的 axios 的版本。当您不需要时,我会建议您反对固定分辨率,因为这可能会导致长期不兼容。如果将来 axios 的版本 >=0.22.0 是您或您的依赖项尝试使用的,您的分辨率设置将强制将它们降低到 >=0.21.2 && <0.22.0 的范围内。

更直接地回答你的问题 - 我没有看到任何看起来有问题的地方。锁定文件完全符合我的预期。您对“axios@^0.21.2”的分辨率受到尊重,因为它引入了 0.21.4,它遵守了这一点(尽管就像我说的那样,实现这一点不需要分辨率)。您还没有完成与@dep/xyz 相关的任何类型的分辨率固定(您也不应该),所以那里没有任何改变。


推荐阅读