2

我在 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 通过对 cacache@12.0.4 的传递依赖需要 ssri@^6.0.1

最早的固定版本是 8.0.1。

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

4

1 回答 1

3

为了加快进程并节省安装每个版本及其相关依赖树,我们可以使用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 不再依赖于 cacache。

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

于 2021-04-20T18:03:14.507 回答