如何解决更新 NPM 中的依赖项以解决漏洞
我在 github 中的 repo 显示以下警报:
Dependabot 无法将 ssri 更新为非易受攻击的版本。由于以下依赖冲突,可以安装的最新版本是 6.0.1:
terser-webpack-plugin@2.3.8 通过 cacache@13.0.1 需要 ssri@^7.0.0
webpack@4.46.0 通过传递依赖需要 ssri@^6.0.1 cacache@12.0.4
最早的固定版本是 8.0.1。
据我所知,我应该将 package.json 中的根包(即 terser-webpack-plugin)更新到较新的版本,但是如何确定可以支持依赖项的非易受攻击版本(在本例中为 ssri 8.0.1)的最低版本,因为我不想更新到太高的版本并冒破坏事物的风险。我正在考虑手动检查 terser-webpack-plugin 的所有发布版本,但是这样检查非常乏味而且似乎是错误的。有什么建议吗?
解决方法
为了加快进程并节省安装每个版本及其关联的依赖树,我们可以使用 npm-remote-ls
(https://stackoverflow.com/a/26005786/2815338)
首先获取可用版本列表:
> npm view terser-webpack-plugin versions
[
'1.0.0','1.0.1','1.0.2','1.1.0','1.2.0',...
然后为当前版本之后的每个版本运行 npm-remote-ls
并过滤相关依赖项,例如
> npm-remote-ls terser-webpack-plugin@3.0.0 | grep ' ssri@'
??? ?????? ssri@8.0.1
??? ??? ??? ?????? ssri@6.0.2
在这种情况下,terser-webpack-plugin@5.0.0 是第一个只有固定版本的 ssri (8.0.1),而 5.1.0 似乎根本不包含 ssri,大概是因为 webpack 不再依赖于缓存。
注意问号似乎是由于 npm-remote-ls
用于显示树结构的字符编码所致。您也可以在 PowerShell 中使用 Select-String
,但这似乎显示不同(不正确)的字符。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。