I would like to use the grunt-contrib-jasmine
NPM package. It has various dependencies. Part of the dependency graph looks like this:
─┬ grunt-contrib-jasmine@0.4.1
│ ├─┬ grunt-lib-phantomjs@0.2.0
│ │ ├─┬ phantomjs@1.8.2-2
Unfortunately, there's a bug in this version phantomjs
which prevents it from installing correctly on Mac OS X. This is fixed in the latest version.
How can I get grunt-lib-phantomjs
to use a newer version of phantomjs
?
Some additional context:
grunt-contrib-jasmine
explicitly requires version"~0.2.0"
ofgrunt-lib-phantomjs
, which explicitly requires version"~1.8.1"
ofphantomjs
.- Adding
phantomjs
to my package's dependencies first has no effect; both versions are installed andgrunt-contrib-jasmine
still uses the older versions (see: When installing a package with NPM, can you tell it to use a different version of one of its dependencies?).
Best Answer
You can use npm shrinkwrap functionality, in order to override any dependency or sub-dependency.
I've just done this in a
grunt
project of ours. We needed a newer version of connect, since2.7.3
. was causing trouble for us. So I created a file namednpm-shrinkwrap.json
:npm
should automatically pick it up while doing the install for the project.(See: https://nodejs.org/en/blog/npm/managing-node-js-dependencies-with-shrinkwrap/)