[英]npm audit versus yarn audit
我有一个使用yarn
作为其 package 管理器的 React Native 项目(0.61.4)。
当我运行yarn audit
时,会报告大量漏洞:
18202 vulnerabilities found - Packages audited: 958823
Severity: 18202 High
✨ Done in 14.34s.
大多数都在一些非常深的依赖路径中。 例如:
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ high │ Prototype Pollution │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=4.17.12 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ react-native │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ react-native > @react-native-community/cli > │
│ │ metro-react-native-babel-transformer > @babel/core > lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://www.npmjs.com/advisories/1065 │
└───────────────┴──────────────────────────────────────────────────────────────┘
当我运行npm audit
时,它首先报告:
Neither npm-shrinkwrap.json nor package-lock.json found: Cannot audit a project without a lockfile
所以我跑:
npm i --package-lock-only
生成一个package-lock.json
文件。 经检查,该文件似乎是正确的。
当我现在运行npm audit
时,结果是:
=== npm audit security report ===
found 0 vulnerabilities
我不明白这两个 package 管理器之间的差异。 为什么npm
报0错误, yarn
18.202?
如果不查看锁定文件并进行比较,很难估计为什么会发生这种情况。 但是,据我所知,只有当两个锁定文件都解析为相同依赖项的不同版本时,才会发生这种情况。
您的yarn.lock
文件是较早生成的,因此它包含易受攻击的旧版本的依赖项,并且由于package-lock.json
是之后生成的,因此它会解析为这些依赖项的最新/固定版本。
请记住npm i --package-lock-only
只会创建 package-lock.json 文件,不安装任何东西,但它不会与实际安装的软件包相提并论。 我认为您假设运行该命令只会从已安装的软件包中派生锁定文件,但它实际上会生成锁定文件,就好像您在没有标志的情况下运行它一样。
因此,总而言之,两个锁定文件都解析为相同依赖项的不同(次要/补丁)版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.