如何覆盖嵌套的NPM依赖版本?
我想使用grunt-contrib-jasmine
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
"~0.2.0"
的grunt-lib-phantomjs
,它明确要求版本"~1.8.1"
phantomjs
"~1.8.1"
的phantomjs
。 - 首先添加
phantomjs
到我的包的依赖关系没有任何影响; 两个版本都安装了,grunt-contrib-jasmine
仍然使用旧版本(请参阅: 使用NPM安装包时,是否可以告诉它使用不同版本的依赖关系?
您可能已经find了解决办法。
无论如何,您可以使用npm shrinkwrapfunction,以覆盖任何依赖关系或子依赖关系。
我刚刚在一个我们的咕噜声中做了这个。 自2.7.3以来,我们需要更新的连接版本。 给我们造成了麻烦。 所以我创build了一个名为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/ )