【发布时间】:2015-07-07 23:51:39
【问题描述】:
在我的 Node.js 项目中,我有一个依赖关系 gulp,它有一个依赖关系 vinyl-fs,它有一个依赖关系 glob-watcher,它有一个依赖关系 gaze。 glob-watcher 是版本 0.0.6 的 gaze 依赖项设置为 ^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