0

在我的 Node.js 项目中,我有一个依赖项gulp,该依赖项vinyl-fs具有一个依赖项,该依赖glob-watcher项具有一个依赖项gazeglob-watcheris version0.0.6gaze依赖项设置为^0.5.1.

根据这篇文章^(插入符号)表示接受最新的次要版本。所以我希望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 个依赖项。我可以指定我的整个依赖树来解决这个问题,但这是不可取的,特别是因为我只想覆盖那个包。(但根据所谓的行为,似乎甚至不需要覆盖^。)

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

任何帮助将不胜感激。

4

1 回答 1

0

为什么?

很简单:最新版本的凝视还没有被npm publish编辑,并且仍然在npm repo上的 0.5.1 版本上

我该如何解决?

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

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

于 2015-04-29T06:30:48.233 回答