我想使用“咕哝-贡献-茉莉花”NPM包。它有各种依赖关系。依赖关系图的一部分是这样的:
─┬ grunt-contrib-jasmine@0.4.1
│ ├─┬ grunt-lib-phantomjs@0.2.0
│ │ ├─┬ phantomjs@1.8.2-2
不幸的是,这个版本的phantomjs有一个错误,阻止它在Mac OS x上正确安装。这在最新版本中得到了修复。
我怎么能让grunt-lib-phantomjs使用一个新的版本的phantomjs?
一些附加上下文:
Grunt-contrib-jasmine明确要求版本为“~0.2.0”的grunt-lib-phantomjs,它明确要求版本为“~1.8.1”的phantomjs。
首先将phantomjs添加到包的依赖项中没有效果;两个版本都安装了,而unt-contrib-jasmine仍然使用旧版本(参见:当使用NPM安装一个包时,你可以告诉它使用一个依赖项的不同版本吗?)
基于其余的答案,我提供了相同的解决方案,但是我显示了包。json,因为我有点纠结于在哪里放置覆盖以及如何放置。
{
"name": "my-app",
"version": "snapshot",
"scripts": {
"ng": "ng",
"build-dev": "ng build --configuration development",
},
"private": true,
"dependencies": {
"@angular/animations": "~14.2.9",
"@angular/common": "~14.2.9"
...
},
"devDependencies": {
"@angular-devkit/build-angular": "^14.2.8",
....
},
"overrides": {
"loader-utils@>2.0.0 <3": "2.0.4",
"loader-utils@>3.0.0 <4": "3.2.1"
}
}
对于2022年11月的“loader-utils”安全漏洞,已被要求
如果您在2中,请使用2.0.4版本。X
如果您是3版本,请使用3.2.1版本。X
为了验证
添加包。Json覆盖标签
删除package-lock.json
执行"npm install"
执行“npm audit”
@user11153的答案在本地为我工作,但当试图做一个干净的安装(也就是删除node_modules),我会得到:
npm-force-resolutions: command not found
我必须更新预安装脚本为:
"preinstall": "npm i npm-force-resolutions && npm-force-resolutions"
这确保在试图运行npm-force-resolutions包之前安装了它。
也就是说,如果你可以用纱线代替,我会这样做,然后使用@Gus的答案。
我本来打算采用npm-force-resolution方法,但似乎只需要将依赖项包含在自己的包中就可以了。Json为我解决了这个问题。
我相信这在我的案例中是有效的,因为原始依赖项允许我想要更新的依赖项的补丁版本。因此,通过手动包含一个新版本,它仍然满足原始依赖项的依赖,并将使用我手动添加的依赖项。
例子
问题
我需要将plyr从3.6.8版本升级到3.6.9版本
Mine
package.json
{
"dependencies": {
"react-plyr": "^3.2.0"
}
}
反应Plyr
package.json
{
"dependencies": {
"plyr": "^3.6.8"
}
}
注意,对于plyr依赖,它以^开头,这意味着它可以接受任何小补丁。你可以在这里了解更多:
https://docs.npmjs.com/about-semantic-versioning#using-semantic-versioning-to-specify-update-types-your-package-can-accept
更新我的
这将更新package.json中的plyr依赖。
package.json
{
"dependencies": {
"plyr": "^3.6.9",
"react-plyr": "^3.2.0"
}
}