`npm install` 和 `npm audit` 计数之间的区别?

Ski*_*ack 6 javascript npm

在最近添加npm audit(用于审计依赖项)之后,我注意到有多少包added(安装在 中node_modules)和有多少是auditednpm. 下面是一个例子:

npm 安装输出

以下是我的问题:

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

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

更新:

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

mkdir test-npm-count-discrepancy
cd test-npm-count-discrepancy
npm init
npm i standard-version
Run Code Online (Sandbox Code Playgroud)

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

小智 1

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

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

对于第三个问题: - 它总是检查开发人员标记的漏洞,以便您可以获得最新版本,在大多数情况下,该版本是错误最少、功能最强大且最安全的。

编辑:重点npm install是更新当前依赖项并将新依赖项安装到目录中。重点npm audit是检查是否有标记为修复安全问题的更新的依赖项。

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

  • 运行“npmaudit--product”并查看数字是否回落到 281。 (2认同)
  • 我正在寻找一些关于与OP提到的相同差异的信息。我想在此讨论中添加我在 SharePoint 框架 (SPFx) 项目中执行 npm 安装时所看到的内容:添加了来自 1212 个贡献者的 2184 个包,并在 57.953 秒内审核了 584933 个包。就我而言,它审核了 250 倍的已安装软件包数量...我想知道审核的软件包数量是否正确。在几秒钟内实际审核这么多数量的包需要花费大量时间(确实如此)。 (2认同)