【问题标题】:Difference between `npm install` and `npm audit` counts?`npm install` 和 `npm audit` 计数之间的区别?
【发布时间】:2018-09-10 01:21:56
【问题描述】:

在最近添加了npm audit(用于审计依赖项)之后,我注意到added(安装在node_modules)的软件包数量与npmaudited 的数量之间存在巨大差异。这是一个例子:

这是我的问题:

  • 我是否更正281 是安装的软件包总数?
  • 为什么npm 审核的包比我项目中的包多?

如果发现漏洞,npm 可能必须退出并 audit 其他软件包版本对我来说是有道理的,但在这种情况下,found 0 vulnerabilities 那么为什么要进行额外的工作?

更新:

我认为顶级与子依赖关系有些混乱。运行以下命令来重现类似的差异:

mkdir test-npm-count-discrepancy
cd test-npm-count-discrepancy
npm init
npm i standard-version

请注意(在撰写本文时)200+ 依赖项是 added(即 standard-version 及其所有子依赖项),但 1000+ 包是 audited。重申一下,上面的主要问题是“为什么npm 审核的包比实际安装的包多?”。

【问题讨论】:

  • npm 不检查嵌套包吗?
  • 它是但281 是顶级+嵌套包的计数(我认为)。在我的实际package.json 中列出的依赖项少于 10 个。
  • 考虑到 281 是您拥有的本地模块的数量,如果您执行 npm ls --depth=0 并且执行 npm ls 将显示自动安装的嵌套模块列表使用这些模块。
  • @RaktimBiswas no npm ls --depth=0 只会列出我的 8 个明确安装的包。如果您考虑 deduped 行,npm ls 正好列出 281 个。我 99% 确定我的第一个问题的答案是肯定的,281 是总数(顶层和嵌套)。 audit 看到的和本地安装的肯定存在差异。

标签: javascript npm


【解决方案1】:

对于第一个问题: - 社区,如果没有指向依赖列表或 package.json 之类的链接,就真的不能这么说。但是,如果您的包文件中只有几个,那么大多数时候它仍然是正常的。您可能自己安装了 12 个,但 NPM 会自动为您安装应用程序依赖项的大部分(如果不是全部)依赖项。它有助于加快您的工作流程。

第二个问题: - 正如我在对第一个问题的回答中提到的,它正在审核您安装的和自动安装的,以便您安装的正常工作。

第三个问题: - 它始终检查开发人员标记的漏洞,因此您可以获得最新版本,大多数情况下,错误最少、功能最多、最安全。

编辑: npm install 的全部意义在于更新当前依赖项并将新依赖项安装到目录中。 npm audit 的重点是检查已标记更新以修复安全问题的依赖项。

编辑 2: 我想我明白了:它可能正在审核已安装的生产依赖项、您的依赖项和开发依赖项,以警告您您的依赖项之一是由开发人员不安全地构建的。

【讨论】:

  • 感谢您的回答,但请参阅上面的 cmets。这绝对不是嵌套与顶级依赖问题。我了解您要求提供示例,虽然我无法从屏幕截图中分享 repo,但我可以分享一些最小的 npm 命令来重现差异。
  • @SkipJack,是的,我知道您无法共享包文件的意思。但是,审核应该查看您通过软件包安装的所有内容以及使用这些依赖项安装的内容,以便它们工作等等。但是“npm install”的全部意义在于更新当前的依赖项并将新的依赖项安装到目录中。 “npm audit”的重点是检查已标记更新以修复安全问题的依赖项。
  • 运行npm audit --production,看看这个数字是否回落到281。
  • 更新:试过了;它只为我删除了大约 4000 个中的大约 100 个,所以这不是答案。重复数据删除 ls 返回 387(--production 为 367)。有趣的是,被审计的数量似乎比这些案例中安装的数量大一个数量级。我想知道这是否是一个暗示。也许它的作用是检查当前安装的版本,然后递归所有可用版本以查找“未修复”漏洞?这是我的猜测。
  • 我正在寻找一些关于与 OP 提到的相同差异的信息。我想在此讨论中添加我在我的 SharePoint 框架 (SPFx) 项目中执行 npm 安装时看到的内容:添加了来自 1212 个贡献者的 2184 个包,并在 57.953 秒内审核了 584933 个包。就我而言,它审核了已安装软件包数量的 250 倍……我想知道审核的软件包数量是否正确。在几秒钟内(确实需要)实际审核这么多包需要花费大量时间。
猜你喜欢
  • 2020-02-10
  • 2016-01-08
  • 2018-12-30
  • 1970-01-01
  • 2018-11-13
  • 2020-08-11
  • 2018-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多