一尘不染

如何覆盖嵌套的NPM依赖版本?

node.js

我想使用grunt-contrib-jasmineNPM软件包。它具有各种依赖性。依赖图的一部分如下所示:

─┬ 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到我程序包的依赖项没有任何作用;这两个版本均已安装,并且grunt-contrib-jasmine仍使用旧版本

阅读 590

收藏
2020-07-07

共1个答案

一尘不染

您可以使用npm收缩包装功能,以覆盖任何依赖性或子依赖性。

我刚刚在我们的一个艰苦的项目中做到了这一点。从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/)

2020-07-07