如何使用不同的包(不仅仅是不同的包版本号)覆盖嵌套的 npm 子依赖项?

2024-04-19

Overview

我在解决由以下人员识别的 ReDoS 漏洞时遇到问题npm audit。我的应用程序有一个嵌套的子依赖项ansi-html很容易受到攻击,但不幸的是,似乎维护人员擅离职守 https://github.com/Tjatse/ansi-html/issues/19。正如您在 Github 问题的评论部分中看到的那样,为了解决这个问题,社区已经创建了一个名为ansi-html-community位于here https://github.com/mahdyar/ansi-html-community,它解决了这个漏洞。

因此,我想替换所有嵌套引用ansi-html with ansi-html-community.

Problem

我的正常使用策略npm-force-resolutions似乎无法完全覆盖不同包的嵌套子依赖项,而只能覆盖具有不同版本号的相同包。我已经研究了几个小时,但不幸的是,我找到解决这个问题的唯一方法似乎是用纱线 https://github.com/Tjatse/ansi-html/issues/19#issuecomment-937690221,我现在正在认真考虑使用它来代替 npm。然而,这并不理想,因为我们的整个 CI/CD 管道都配置为使用 npm。

有谁知道有任何其他方法可以完成嵌套子依赖包替换/解析而不必切换到使用纱线?

相关问题

这些是我能够找到的感兴趣的问题,但不幸的是,他们往往只讨论覆盖包版本号的方法,而不是包本身。

讨论如何覆盖版本号:

如何覆盖嵌套的 NPM 依赖项版本? https://stackoverflow.com/questions/15806152/how-do-i-override-nested-npm-dependency-versions

有评论讨论npm shrinkwrap(不理想):

npm - 如何覆盖依赖包的依赖项? https://stackoverflow.com/questions/32239240/npm-how-to-override-a-dependent-packages-dependencies


我想到了。截至 2021 年 10 月,该解决方案使用npm-force-resolutions实际上与您使用指定它的方式非常相似yarn。您只需提供一个 tarball 的链接,您通常会在其中指定覆盖版本号。您的决议部分package.json应该看起来像这样:

"resolutions": {
    "ansi-html": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz"
}

要查找 tarball 的链接,请使用以下命令,并根据需要修改注册表:

npm view ansi-html-community dist.tarball --registry=https://registry.npmjs.org/

另请注意,对于npm-force-resolutions跑步时工作npm install,你将需要一个preinstall下的条目scripts的部分package.json:

  "scripts": {
    "preinstall": "npx npm-force-resolutions"
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用不同的包(不仅仅是不同的包版本号)覆盖嵌套的 npm 子依赖项? 的相关文章

随机推荐

  • 将变量传递给 Google Cloud Functions

    我刚刚在 Beta Python 3 7 运行时中使用 HTTP 触发器编写了 Google Cloud Function 现在我试图弄清楚如何在调用函数时将字符串变量传递给函数 我已阅读文档 但没有找到任何相关内容 我的触发器类似于 ht
  • 如何在光线平行且不使用光线模式的情况下运行函数?

    After sudo pip3 install ray 我创建了一个函数foo 在射线装饰器中定义 import ray ray init ray remote def foo x print x 我希望能够使用foo并行和常规模式 忽略装
  • ViewModel 和 Service 类的实例化

    我试图理解 ViewModel 和 Service 类的实例化 并将其写下来供其他人使用 请在需要的地方更正 添加 ViewModel 和服务的实例化并不是以最常见的方式完成的 这是使用反射完成的 在 TipCalc 中 您有 public
  • 在特定日期触发 UILocalNotification

    我想开火UILocalNotification在特定日期 如果我使用这段代码 NSCalendar gregorian NSCalendar alloc initWithCalendarIdentifier NSGregorianCalen
  • 尝试理解 Pytorch 的 LSTM 实现

    我有一个包含 1000 个示例的数据集 其中每个示例都有5特征 a b c d e 我想喂7LSTM 的示例 以便它预测第 8 天的特征 a 阅读 nn LSTM 的 Pytorchs 文档 我得出以下结论 input size 5 hid
  • Akka 通过可堆叠行为拦截接收

    Akka 和 Scala 新手 请根据需要随意编辑问题 以便清楚地表达我在 Scala 和 Akka 领域的意图 在展示代码片段之前 这是我想要解决的问题 我本质上想开发一个通用模块 供我的团队在使用 Akka Actor 开发应用程序时使
  • Tcl正则表达式

    set d aa1 1 set d aa2 1 set d aa3 1 set d aa4 1 set d aa5 1 set d aa6 1 set d aa7 1 set d aa8 1 set d aa9 1 set d aa10 1
  • Fortran 读取混合文本和数字

    我正在使用 Fortran 90 读取包含以下格式数据的文件 number 125 var1 2 var2 1 var3 4 number 234 var1 3 var2 5 var3 1 我尝试了以下命令并且工作正常 read 2 tem
  • Ionic Jasmine:env.stopOnSpecFailure 编译成功后不是函数

    将 Ionic 与 jasmine karma 一起使用 在运行测试时 编译成功 但在 jasmine 仪表板中出现空屏幕 控制台中出现错误 以下教程 https leifwells github io 2017 08 27 testing
  • 受范数不等式约束的二次函数最小化

    我正在尝试解决以下不等式约束 给定 N 只股票的时间序列数据 我试图构建一个投资组合权重向量以最小化回报的方差 目标函数 min w T sum w s t e n T w 1 left w right leq C where w是权重向量
  • 从外部访问 Google 地图

    我有一些 javascript 代码 可以绘制 v3 GoogleMap 我想从外部访问地图对象 另一个js文件 是否有可能不创建额外的全局变量来引用地图 单独的 JS 文件在同一范围内加载和执行 因此无论您使用一个还是多个 JS 文件 都
  • 将参数从 tasklet 步骤添加到作业上下文,并在 Spring Batch 的后续步骤中使用

    目前 我使用 jobParameters 来获取 FlatFileItemReader 和 FlatFileItemWriter 的文件名 测试我的批次是可以的 但我的目标是读取某个目录中的文件 该目录中只有这个文件 并且文件名可能会改变
  • 错误:invalid_request 缺少必需参数:范围(Restify 和 Passportjs w/ Google OAuth2)

    因此 我在使用 Restify 和 Passportjs Google OAuth2 策略 时遇到了 Node js 应用程序的问题 当我使用passport authenticate 它给了我以下错误 400 这是一个错误 错误 无效 请
  • 提高Python代码的速度

    我有一些包含许多类的 python 代码 我用了cProfile发现程序运行总时间为68秒 我发现一个类中有以下函数Buyers这 68 秒中大约需要 60 秒 我必须运行该程序大约 100 次 因此速度的任何提高都会有所帮助 您能建议通过
  • 如何查找 C++ 中的内存泄漏

    在嵌入式环境中检测 C 内存泄漏的好方法是什么 我尝试重载 new 运算符来记录每个数据分配 但我一定做错了什么 这种方法不起作用 还有其他人遇到过类似的情况吗 这是 new 和 delete 运算符重载的代码 EDIT 完全披露 我正在寻
  • 带有大标题的导航栏 iOS 11 的图像

    AppStore app has an icon with an image on the right side of the NabBar with Large Title 如果有人的话我真的很感激知道如何实施 it or ideas关于
  • 从 FlowDocument 创建 XPS 文档并即时附加它

    我有一个 FlowDocument 我想将其转换为 XPS 文档并将其附加到电子邮件中并一起发送 我正在使用这个代码 public static Stream FlowDocumentToXPS FlowDocument flowDocum
  • 使用 Java 应用程序运行 Orbeon-Form-Builder-Generate-Form

    我应该能够使用 Java 应用程序运行 Orbeon Form Builder Generated Form 吗 即 将表单的源代码复制到 simple JSP 中 使用中提到的单独部署 http wiki orbeon com forms
  • 用于在命令提示符下运行 .exe 的 Bat 文件

    我想创建一个 bat 文件 这样我只需单击它即可运行 svcutil exe language cs out generatedProxy cs config app config http localhost 8000 ServiceMo
  • 如何使用不同的包(不仅仅是不同的包版本号)覆盖嵌套的 npm 子依赖项?

    Overview 我在解决由以下人员识别的 ReDoS 漏洞时遇到问题npm audit 我的应用程序有一个嵌套的子依赖项ansi html很容易受到攻击 但不幸的是 似乎维护人员擅离职守 https github com Tjatse a