首页 > 解决方案 > `npm install` 和 `npm audit` 计数之间的区别?

问题描述

在最近添加(用于审计依赖项)之后,我注意到(安装在 中)npm audit的软件包数量与. 这是一个例子:addednode_modulesauditednpm

npm 安装输出

以下是我的问题:

如果发现漏洞,npm可能不得不退出其他软件包版本对我来说是有道理的,但在这种情况下,为什么还要进行额外的工作?auditfound 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审核的包比实际安装的包多?”。

标签: javascriptnpm

解决方案


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

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

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

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

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


推荐阅读