我收到关于package-lock.json
中列出的软件包中的漏洞的警告。我的 Node.Js 项目的文件。
我可以关注advice here并使用 npm install <package-name>
重新安装所有软件包,但是,我还使用其他使用这些软件包旧版本的 npm 项目,这些项目不会通过简单的 npm install
重新安装。 .
这是否意味着我必须去 package-lock.json
并手动将所有依赖项更改为最新版本?
如果它们坏了怎么办?
是否有一种正确的更新方法可以确保您不会破坏依赖于旧版本的其他软件包?
最佳答案
如果问题出在您直接依赖的包上,您应该直接更新它并将其保存到 package.json
+ 在 package-lock.json
中锁定其版本code> 在此过程中执行类似 npm install your-dependency@latest --save[-dev]
的操作。但请注意:可能会有一些重大更改会破坏您的代码(例如,如果依赖项在主要版本更新期间发生了一些弃用和重大更改)。
但是,如果问题来自于您的某个依赖项的依赖项,那么解决该问题的最佳方法是向父包的维护者提出问题(可能需要 PR 来帮助他们),然后当他们提供更新,更新项目中的依赖项本身。
您也可以使用npmaudit
来解决一些问题(可能不是全部,并且如果依赖项特别需要子依赖项版本,它不会更新它,因为它可能会破坏事情),但是为您和其他人解决问题的唯一最佳方法是让您想要更新其依赖项的模块的维护者(如果可以的话)。
如果依赖项仍然容易受到攻击,重新安装所有内容都无法解决问题。安装并不会神奇地解决问题,人们会这样做:-) 但是,您可能想要做的是使用 npm outdated 列出所有具有可用更新版本的软件包,并尝试一一更新它们,然后查看您的漏洞是否已解决(npmaudit
)。
还有一件事:在 package-lock.json
中手动更改内容通常是一种不好的做法。该文件只能由您的 npm install
(或类似)脚本之一自动生成。 npm 使用此文件来解析全新安装时的确切依赖项/子依赖项版本列表,这实际上是确保所有使用或从事该项目的人员都拥有完全相同版本的唯一最佳方法。他们的依赖性,所以最好是正确的。始终提交您的 package-lock.json
!
关于javascript - 解决 package-lock.json 中的漏洞的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53995567/