45

npm audit fix旨在自动升级/修复 npm 包中的漏洞。但是,我还没有找到修复这些漏洞的具体方法。

我假设这npm audit fix会将依赖项和依赖项的依赖项升级到软件包的 semver-definitions 允许的最新版本——实际上与rm package-lock.json; npm install. 但是npm audit fix,在删除锁定文件 + 重新安装后仍然会执行很多更改。

具体是npm audit fix做什么的?例如,它是否安装了比相应版本允许的版本更新的依赖package.json项(但仍然与 semver 兼容)?

4

2 回答 2

35

从 NPM网站上的审计命令

npm audit fixnpm install在引擎盖下运行成熟

而且似乎审计修复默认只进行与 semver 兼容的升级。在文档前面列出:

让审计修复安装 semver-major 更新到顶级依赖项,而不仅仅是 semver 兼容的更新:

$ npm audit fix --force

至于锁定文件,每次运行更改的命令时都会重新生成package.json此处的答案以及官方文档中提供了有关此的更多信息。

于 2020-04-24T20:18:01.793 回答
2

在我的理解中,不仅是“升级”,有时还降级以安装修复问题的稳定版本,有时这些问题出现在可能引入错误的较新版本中。

例如,在我的情况下,例如 npm install 已经将 react-script 升级到 5.0.0 ,它有一些问题并且在运行之后:

npm audit fix --force

force 标志的作用是:要解决所有问题(包括重大更改),请运行:npm audit fix --force

它安装了 3.0.1 并显示以下消息:

npm WARN audit Updating react-scripts to 3.0.1,which is a SemVer major change.

因此,它会升级到该软件包的稳定版本来解决问题。

最重要的是,虽然文档声明“正在后台运行 npm install”,但不是安装最新版本的依赖项,但也可以用于检查 npm ci 发生了什么“npm install”和“npm ci”?

于 2022-02-09T13:06:10.547 回答