解决package-lock.json漏洞的最佳方法是什么



我收到关于Node.Js项目的package-lock.json文件中列出的包存在漏洞的警告。

我可以按照这里的建议,用npm install <package-name>重新安装所有包,但是,我也使用其他使用这些包的旧版本的npm项目,这些项目不会用简单的npm install重新安装。

这是否意味着我必须转到package-lock.json并手动将所有依赖项更改为最新版本?

如果它们坏了怎么办?

难道没有一种正确的更新方式来确保你不会破坏依赖于旧版本的其他软件包吗?

如果问题发生在您直接依赖的包上,则应直接更新并将其保存到package.json中,并在此过程中通过执行类似npm install your-dependency@latest --save[-dev]的操作将其版本锁定在package-lock.json中。但要注意:可能会有破坏性的更改会破坏您的代码(例如,如果依赖项在其间进行了重大版本更新,并进行了一些弃用和破坏性更改)。

但是,如果问题来自某个依赖项的依赖项,解决问题的最佳方法是向父包的维护者提出问题(可能需要PR来帮助他们),然后当他们提供更新时,在项目中更新依赖项本身。

您也可以使用npm audit来解决一些问题(可能不是所有问题,如果依赖项特别需要子依赖项版本,它不会更新它,因为它可能会破坏东西),但对您和其他人来说,解决问题的唯一最佳方法是让您想更新其依赖项的模块的维护人员在可能的时候/如果可能的话更新它。

如果依赖关系仍然很脆弱,重新安装所有内容并不能解决问题。安装并不能神奇地修复东西,人们会这样做:-)然而,你可能想做的是使用npm outdated列出所有有更新版本的软件包,并尝试逐一更新它们,然后看看你的漏洞是否在那之后得到了解决(npm audit)。

还有一件事:在package-lock.json中手动更改内容通常是一种糟糕的做法。该文件应仅由npm install(或类似脚本)之一自动生成。这个文件是npm在新安装时用来解析确切依赖项/子依赖项版本列表的文件,它确实是确保所有使用或处理这个项目的人都拥有完全相同版本的所有依赖项的唯一最佳方法,所以它最好是正确的。始终提交您的package-lock.json

相关内容

最新更新