npm嵌套依赖项而不是最新版本

时间:2015-04-28 22:32:55

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

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

根据this post ^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" } } } } } } } } } 版本,但不幸的是,配置只导致安装了4个依赖项。我可以指定我的整个依赖树来修复它,但这是不可取的,特别是因为我只想覆盖那个包。 (但根据gaze所声称的行为,它看起来似乎不应该是必要的。)

显然我也可以向^写一个shell脚本到该依赖项并手动cd我想要的版本,但是我宁愿这样做"对"方式,如果有的话。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

  

为什么?

非常简单: gaze 的最新版本尚未npm publish编辑,仍然在https://github.com/r0man/cljs-http上的版本0.5.1

  

我该如何解决这个问题?

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

编辑:也许在shrinkwrap中使用此网址 npm repo 会有效。