javascript - `npm install` 和 `npm audit` 计数之间的区别?
问题描述
在最近添加(用于审计依赖项)之后,我注意到(安装在 中)npm audit
的软件包数量与. 这是一个例子:added
node_modules
audited
npm
以下是我的问题:
- 我正确的
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
审核的包比实际安装的包多?”。
解决方案
对于第一个问题: - 社区,如果没有指向依赖列表或 package.json 之类的链接,就真的不能这么说。但是,如果您的包文件中只有几个,那么大多数时候它仍然是正常的。你可能自己安装了 12 个,但 NPM 会自动为你安装应用程序依赖项的大部分(如果不是全部)依赖项。它有助于加快您的工作流程。
对于第二个问题: - 正如我在对第一个问题的回答中提到的,它正在审核您安装的那些和自动安装的那些,以便您安装的那些可以正常工作。
对于第三个问题: - 它始终检查开发人员标记的漏洞,因此您可以获得最新版本,大多数情况下,错误最少、功能最多、最安全。
编辑:重点npm install
是更新当前依赖项并将新依赖项安装到目录中。重点npm audit
是检查已标记更新以修复安全问题的依赖项。
编辑 2:我想我明白了:它可能正在审核已安装的生产依赖项、您的依赖项和 dev-dependencies,以警告您其中一个依赖项是由开发人员不安全地构建的。
推荐阅读
- javascript - 页面已经加载内容后,我可以通过 AJAX 将内容加载到 Handlebars 模板中吗?
- asp.net-core-2.0 - 如何根据asp.net core 2.0中另一个下拉列表中的选定值填充下拉列表
- reactjs - React 和 aws 中基于 dynamo id 的路由
- powershell - 如何使用计划任务执行 powershell(x86)?
- reactjs - 如何在reactjs中不使用jsx迭代json响应?
- jquery - 如何为剑道模式添加全局事件监听器并做些什么?
- python - 如何在 python 的 logging.conf 中导入 ssl 模块?
- python - 如何将列表中的元素搜索到字符串中并在匹配项旁边提取关键字
- php - 如何从路由中调用容器?
- amazon-web-services - 端口 22:连接超时