npm audit fix
是为了自动升级/修复npm包中的漏洞,但是我还没有发现它到底是如何修复这些漏洞的。
我假设npm audit fix
会将依赖项和依赖项的依赖项升级到包的semver-definitions允许的最新版本-实际上与rm package-lock.json; npm install
相同。然而,npm audit fix
在删除锁定文件+重新安装后仍然执行许多更改。npm audit fix
到底是做什么的?例如,它是否安装比相应的package.json
所允许的版本更新的依赖项版本(但仍然是半兼容的)?
2条答案
按热度按时间q9yhzks01#
来自NPM的site on their audit command:
npm audit fix
在幕后运行成熟的npm install
而且,审计修复程序似乎在默认情况下只执行永远兼容的升级。
使审核修复程序安装对顶级依赖项的永久主要更新,而不仅仅是永久兼容的更新:
至于锁文件,每次运行更改
package.json
的命令时都会重新生成它,有关此问题的更多信息,请参见here答案以及official documentation。qvk1mo1f2#
在我的理解不仅是"升级",但有时也降级,以安装解决问题的稳定版本,有时这些问题出现在较新的版本,可能已经引入了错误或根本不匹配以前的包的API等。
例如,在我的情况下,例如npm安装将react-script升级到5.0.0,它有一些问题,在运行后:
强制标志执行以下操作:要解决所有问题(包括中断更改),请运行:国家预防机制审计修正----强制
它安装了3.0.1,并显示以下消息:
因此,它会升级到修复该问题的软件包的稳定版本。
最重要的是,虽然docs声明"正在幕后运行npm install",但不是安装最新版本的依赖项,但也可能有助于检查npm ci What is the difference between "npm install" and "npm ci"?发生了什么