“npm审计修复”到底是做什么的?

chhkpiq4  于 2023-03-03  发布在  其他
关注(0)|答案(2)|浏览(232)

npm audit fix是为了自动升级/修复npm包中的漏洞,但是我还没有发现它到底是如何修复这些漏洞的。
我假设npm audit fix会将依赖项和依赖项的依赖项升级到包的semver-definitions允许的最新版本-实际上与rm package-lock.json; npm install相同。然而,npm audit fix在删除锁定文件+重新安装后仍然执行许多更改。
npm audit fix到底是做什么的?例如,它是否安装比相应的package.json所允许的版本更新的依赖项版本(但仍然是半兼容的)?

q9yhzks0

q9yhzks01#

来自NPM的site on their audit command
npm audit fix在幕后运行成熟的npm install
而且,审计修复程序似乎在默认情况下只执行永远兼容的升级。
使审核修复程序安装对顶级依赖项的永久主要更新,而不仅仅是永久兼容的更新:

$ npm audit fix --force

至于锁文件,每次运行更改package.json的命令时都会重新生成它,有关此问题的更多信息,请参见here答案以及official documentation

qvk1mo1f

qvk1mo1f2#

在我的理解不仅是"升级",但有时也降级,以安装解决问题的稳定版本,有时这些问题出现在较新的版本,可能已经引入了错误或根本不匹配以前的包的API等。
例如,在我的情况下,例如npm安装将react-script升级到5.0.0,它有一些问题,在运行后:

npm audit fix --force

强制标志执行以下操作:要解决所有问题(包括中断更改),请运行:国家预防机制审计修正----强制
它安装了3.0.1,并显示以下消息:

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

因此,它会升级到修复该问题的软件包的稳定版本。
最重要的是,虽然docs声明"正在幕后运行npm install",但不是安装最新版本的依赖项,但也可能有助于检查npm ci What is the difference between "npm install" and "npm ci"?发生了什么

相关问题