我想使用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
仍使用较旧的版本(请参见:发布于 2013-07-02 19:05:02
您可以使用npm shrinkwrap功能来覆盖任何依赖或子依赖。
我刚刚在我们的一个grunt
项目中完成了这项工作。自从2.7.3
以来,我们需要一个更新版本的connect。给我们带来了麻烦。所以我创建了一个名为npm-shrinkwrap.json
的文件
{
"dependencies": {
"grunt-contrib-connect": {
"version": "0.3.0",
"from": "grunt-contrib-connect@0.3.0",
"dependencies": {
"connect": {
"version": "2.8.1",
"from": "connect@~2.7.3"
}
}
}
}
}
在为项目进行安装时,npm
应该会自动拾取它。
(请参阅:https://nodejs.org/en/blog/npm/managing-node-js-dependencies-with-shrinkwrap/)
发布于 2018-01-30 23:03:23
对于2018年及以后的版本,使用npm版本5或更高版本:编辑您的package-lock.json
:从"requires"
部分移除该库,并将其添加到“依赖项”下。
例如,您希望deglob
包使用glob
包版本3.2.11
,而不是其当前版本。您打开package-lock.json
并看到:
"deglob": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.0.tgz",
"integrity": "sha1-TUSr4W7zLHebSXK9FBqAMlApoUo=",
"requires": {
"find-root": "1.1.0",
"glob": "7.1.2",
"ignore": "3.3.5",
"pkg-config": "1.1.1",
"run-parallel": "1.1.6",
"uniq": "1.0.1"
}
},
从"requires"
中删除"glob": "7.1.2",
,添加具有正确版本的"dependencies"
:
"deglob": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.0.tgz",
"integrity": "sha1-TUSr4W7zLHebSXK9FBqAMlApoUo=",
"requires": {
"find-root": "1.1.0",
"ignore": "3.3.5",
"pkg-config": "1.1.1",
"run-parallel": "1.1.6",
"uniq": "1.0.1"
},
"dependencies": {
"glob": {
"version": "3.2.11"
}
}
},
现在删除你的node_modules
文件夹,运行npm ci
(或者对于旧版本的node/npm运行npm install
),它会将缺失的部分添加到"dependencies"
部分。
发布于 2020-07-17 22:27:39
对我来说唯一有效的解决方案(Node12.x,npm 6.x)是使用@Rogerio Chaves开发的npm-force-resolutions。
首先,通过以下方式安装它:
npm install npm-force-resolutions --save-dev
如果一些损坏的可传递依赖项脚本阻止您安装任何东西,您可以添加--ignore-scripts
。
然后在package.json
中定义应该覆盖的依赖项(您必须设置确切的版本号):
"resolutions": {
"your-dependency-name": "1.23.4"
}
在"scripts"
部分中添加新的预安装条目:
"preinstall": "npm-force-resolutions",
现在,npm install
将对所有依赖项应用更改并强制your-dependency-name
处于1.23.4
版本。
https://stackoverflow.com/questions/15806152
复制相似问题