我想使用grunt-contrib-jasmine NPM包。它有各种依赖关系。依赖关系图的一部分如下所示:
─┬ grunt-contrib-jasmine@0.4.1
│ ├─┬ grunt-lib-phantomjs@0.2.0
│ │ ├─┬ phantomjs@1.8.2-2不幸的是,在这个版本的phantomjs中有一个错误,阻止它在Mac上正确安装。这个问题在最新版本中得到了修复。
如何让使用较新版本的
一些额外的上下文:
grunt-contrib-jasmine显式要求phantomjs."~0.2.0"版本为grunt-lib-phantomjs,它明确要求grunt-lib-phantomjs phantomjs的版本"~1.8.1"首先对我的软件包的依赖项没有影响;两个版本都已安装,grunt-contrib-jasmine仍使用较旧的版本(请参见:发布于 2021-11-30 23:11:46
使用完全不同的包进行嵌套替换
如果你只对覆盖包的版本号感兴趣,这里列出的大多数策略都很好用,但在我们的例子中,我们需要找到一种方法来用一个完全不同的包覆盖嵌套的npm子依赖项。有关您为什么要这样做的详细信息,请参阅以下问题:
直接指定tarball
对于使用其他人提到的npm-force-resolutions策略将包嵌套替换为完全不同的包,您只需要提供一个到tarball的链接,您通常会在其中指定覆盖的版本号。
例如,对于将易受攻击的包ansi-html替换为此包的固定分支ansi-html-community的情况,package.json的resolutions部分应如下所示:
"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时工作,您需要在package.json的scripts部分下有一个preinstall条目
"scripts": {
"preinstall": "npx npm-force-resolutions"
}https://stackoverflow.com/questions/15806152
复制相似问题