更新 NPM 中的依赖项以解决漏洞

时间:2021-03-31 08:15:21

标签: npm npm-install dependabot

我在 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 的所有发布版本,但是这样检查非常乏味而且似乎是错误的。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

为了加快进程并节省安装每个版本及其关联的依赖树,我们可以使用 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,但这似乎显示不同(不正确)的字符。

相关问题