首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何覆盖嵌套的NPM依赖版本?

如何覆盖嵌套的NPM依赖版本?
EN

Stack Overflow用户
提问于 2013-04-04 16:30:15
回答 9查看 217.6K关注 0票数 414

我想使用grunt-contrib-jasmine NPM包。它有各种依赖关系。依赖关系图的一部分如下所示:

代码语言:javascript
复制
─┬ grunt-contrib-jasmine@0.4.1
 │ ├─┬ grunt-lib-phantomjs@0.2.0
 │ │ ├─┬ phantomjs@1.8.2-2

不幸的是,在这个版本的phantomjs中有一个错误,阻止它在Mac上正确安装。这个问题在最新版本中得到了修复。

如何让使用较新版本的

一些额外的上下文:

  • grunt-contrib-jasmine显式要求phantomjs.
  • Adding的"~0.2.0"版本为grunt-lib-phantomjs,它明确要求grunt-lib-phantomjs phantomjs的版本"~1.8.1"首先对我的软件包的依赖项没有影响;两个版本都已安装,grunt-contrib-jasmine仍使用较旧的版本(请参见:
EN

Stack Overflow用户

发布于 2021-11-30 23:11:46

使用完全不同的包进行嵌套替换

如果你只对覆盖包的版本号感兴趣,这里列出的大多数策略都很好用,但在我们的例子中,我们需要找到一种方法来用一个完全不同的包覆盖嵌套的npm子依赖项。有关您为什么要这样做的详细信息,请参阅以下问题:

How to override a nested npm sub-dependency with a different package altogether (not just different package version number)?

直接指定tarball

对于使用其他人提到的npm-force-resolutions策略将包嵌套替换为完全不同的包,您只需要提供一个到tarball的链接,您通常会在其中指定覆盖的版本号。

例如,对于将易受攻击的包ansi-html替换为此包的固定分支ansi-html-community的情况,package.json的resolutions部分应如下所示:

代码语言:javascript
复制
"resolutions": {
    "ansi-html": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz"
}

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

代码语言:javascript
复制
npm view ansi-html-community dist.tarball --registry=https://registry.npmjs.org/

还要注意,要让npm-force-resolutions在运行npm install时工作,您需要在package.jsonscripts部分下有一个preinstall条目

代码语言:javascript
复制
  "scripts": {
    "preinstall": "npx npm-force-resolutions"
  }
票数 2
EN
查看全部 9 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15806152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档