【问题标题】:npm nested dependency not latest versionnpm 嵌套依赖不是最新版本
【发布时间】:2015-07-07 23:51:39
【问题描述】:

在我的 Node.js 项目中,我有一个依赖关系 gulp,它有一个依赖关系 vinyl-fs,它有一个依赖关系 glob-watcher,它有一个依赖关系 gazeglob-watcher 是版本 0.0.6gaze 依赖项设置为 ^0.5.1

根据this post^(插入符号)表示接受最新的次要版本。所以我希望glob-watcher 安装gaze 的最新次要版本,(在撰写本文时)是0.6.4。但它没有,只安装了0.5.1

问题:为什么?我该如何解决这个问题?

我尝试将以下npm-shrinkwrap.json 添加到我的项目根目录并运行rm -rf node_modules/ && npm install

{
  "name": "MyProject",
  "version": "0.0.1",
  "dependencies": {
    "gulp": {
      "version": "3.8.11",
      "from": "gulp@~3.8.10",
      "dependencies": {
        "vinyl-fs": {
          "version": "0.3.13",
          "from": "vinyl-fs@^0.3.0",
          "dependencies": {
            "glob-watcher": {
              "version": "0.0.6",
              "from": "glob-watcher@^0.0.6",
              "dependencies": {
                "gaze": {
                  "version": "0.6.4",
                  "from": "gaze@^0.5.1"
                }
              }
            }
          }
        }
      }
    }
  }
}

确实如此,所以安装了我想要的 gaze 版本,但不幸的是,该配置导致只安装了这 4 个依赖项。我可以指定我的整个依赖树来解决这个问题,但这是不可取的,特别是因为我只想覆盖那个包。 (但根据^ 声称的行为,似乎不需要覆盖。)

显然,我也可以将 shell 脚本写入 cd 到该依赖项并手动 npm install 我想要的版本,但如果有的话,我宁愿以“正确”的方式执行此操作。

任何帮助将不胜感激。

【问题讨论】:

  • 你用的是什么版本的 NPM?
  • npm --version 1.4.28

标签: node.js npm semantic-versioning npm-shrinkwrap


【解决方案1】:

为什么?

很简单:gaze 的最新版本还没有被npm published,在npm repo 上仍然是 0.5.1 版

我该如何解决这个问题?

你有点scr***。解决方案是使用npm install [githubtarball] --save,但您不想手动编辑依赖项的 package.json,并且您想要 fork glob-watcher , vinyl-fsgulp.

编辑:也许在shrinkwrap中使用这个网址https://github.com/shama/gaze/tarball/v0.6.4会起作用。

【讨论】:

    猜你喜欢
    • 2020-06-08
    • 2013-03-26
    • 2013-01-25
    • 2022-06-23
    • 2012-03-29
    • 2017-09-13
    • 2021-03-06
    相关资源
    最近更新 更多