0

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

我可以按照这里的建议npm install <package-name>使用npm install.

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

如果他们坏了怎么办?

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

4

1 回答 1

2

如果问题出在您直接依赖的包上,您应该直接更新它并将其保存到package.json+ lock 它的版本在package-lock.json此过程中通过执行类似npm install your-dependency@latest --save[-dev]. 但请注意:可能会有破坏性更改会破坏您的代码(例如,如果依赖项之间有一个主要版本更新,其中包含一些弃用和破坏性更改)。

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

您也可以使用它npm audit来解决一些问题(可能不是全部,并且如果依赖项特别需要子依赖项版本,它不会更新它,因为它可能会破坏事情),但解决问题的唯一最佳方法是您和其他所有人都是让您想要更新其依赖关系的模块的维护者,何时/如果可以的话。

如果依赖项仍然易受攻击,重新安装所有内容将无法解决问题。安装不会神奇地修复东西,人们会这样做:-) 但是,您可能想要做的是使用npm outdated列出所有具有较新版本的软件包并尝试一一更新,然后查看您的漏洞是否得到解决那个 ( npm audit)。

还有一件事:在package-lock.json. 此文件应仅由您的npm install(或类似的)脚本之一自动生成。这个文件是 npm 用来在全新安装时解析确切依赖/子依赖版本列表的文件,它确实是确保所有使用或从事该项目工作的人都拥有完全相同版本的唯一最佳方式他们的依赖关系,所以最好是正确的。始终承诺package-lock.json

于 2019-01-01T13:03:08.543 回答