我试图确保我的项目在生产中没有漏洞,所以我运行了:
npm audit > vulnerabilities.txt
然后搜索“ Dependency of”的所有实例
会显示一个列表,如:
Line 199: Dependency of babel-preset-es2015 [dev]
Line 215: Dependency of babel-preset-es2015 [dev]
Line 230: Dependency of babel-preset-es2015 [dev]
我可以假设所有的人都带有那个[dev]标记,那么npm audit发现生产中没有程序包漏洞吗?
答案 0 :(得分:0)
看起来答案是肯定的。
为了验证这一点,我跑了
npm audix fix --production
然后运行
npm audit
产生了一个列表,其中每个依赖项都是一个“ Dependency Of”,标记为[dev]。
如果在某个时候npm直接在npm audit
上支持--production标志,那么它将变得更加容易。
答案 1 :(得分:0)
在较旧的 npm 版本中,您可以在下面执行,即使在我发现的较新版本中 --production 标志非常有问题并且节点仍然报告 devDependencies,在这两种情况下,您都可以使用它:
npm prune --production --dry-run
以上将输出来自内部依赖项的任何漏洞。不过,您需要手动修复任何漏洞。
注意:我参与过的许多项目都错误地在 devDependencies 中使用了生产依赖项,而不是依赖项。这当然需要先修复。 (只需在 package.json 和 npm i 中移动声明 - 如果需要,请检查锁定文件中的确切版本)
如果来自 node_module 的代码用于客户端(如果使用它有时很难判断)它应该在依赖项中(例如 corejs)
如果您有一个节点后端/托管,那么您需要检查它是否也用于生产中的 Node BE。