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

Update dependencies in NPM to resolve vulnerability

我在 github 中的回购显示以下警报:

Dependabot 无法将 ssri 更新到不易受攻击的版本。可以安装的最新可能版本是 6.0.1,因为存在以下相互冲突的依赖项:

terser-webpack-plugin@2.3.8 requires ssri@^7.0.0 via cacache@13.0.1

webpack@4.46.0 requires ssri@^6.0.1 via a transitive dependency on cacache@12.0.4

最早的固定版本是8.0.1.

据我所知,我应该更新 package.json[=24 中的根包(即 terser-webpack-plugin) =] 到较新的版本,但是如何确定可以支持依赖项的非易受攻击版本(在本例中为 ssri 8.0.1)的最低版本,因为我不想更新到太高的版本并冒着破坏的风险事物。我正在考虑手动检查 terser-webpack-plugin 的所有发布版本,但是这样检查非常乏味而且似乎是错误的。有什么建议吗?

为了加快进程并节省安装每个版本及其相关依赖树的时间,我们可以使用 npm-remote-ls ()

首先获取可用版本列表:

> 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 不再取决于缓存。

N.B。问号似乎是由于 npm-remote-ls 用于显示树结构的字符编码引起的。您也可以在 PowerShell 中使用 Select-String,但这似乎显示了不同的(不正确的)字符。