我有一个使用 NodeJS 的前端应用程序,我试图仅在高漏洞或严重漏洞上使 npm 审核中断,因此我尝试更改文档中指定的审核级别,但它仍然会返回低漏洞正如你所看到的
npm set audit-level high
npm config set audit-level high
npm audit
我是不是做错了什么?
我的npm版本是6.14.5 我的 NodeJS 版本是 10.17.0
我知道这是一个老问题,我自己也问过同样的问题,所以我想我会回答以帮助下一个人。
基于此处的讨论,
--audit-level
参数指示npm审核是否失败(以1
退出)或不失败(以0
退出)。这意味着,如果您指定 --audit-level=critical
,如果存在严重漏洞,它将以 1
退出,否则它将以 0
存在。然而,它不会控制/过滤报告/输出,我觉得这很烦人。
作为一种解决方法,我这样做是为了仅输出/报告我关心的级别。它不是很优雅,但如果漏洞列表很长,它对我有帮助:
npm audit --parseable | grep high
正如弗兰克已经提到的那样,
--audit-level
仅对npm audit
返回的退出代码有效。如果您希望简化文本输出,则必须自己解析它。这是我使用 npm
版本 9.6.7
的 --json
标志与 jq 结合使用的一种解决方案:
npm audit --json | jq '.vulnerabilities[] | select(.severity == "high") | .name'
这只是输出具有
"high"
漏洞的软件包的名称,但是您可以随意使用它,以获得对您更有用的输出。从 | .name
查询末尾删除 jq
以查看返回的整个对象等。
在 Windows 上,您必须运行:
npm audit --json | jq '.vulnerabilities[] | select (.severity == \"critical\")'
在 Linux 上,正如 J.M Janson 所说,你可以这样做:
npm audit --json | jq '.vulnerabilities[] | select(.severity == "high") | .name'