在我的 Node.js 项目中,我有一个依赖项gulp
,该依赖项vinyl-fs
具有一个依赖项,该依赖glob-watcher
项具有一个依赖项gaze
。glob-watcher
is version0.0.6
的gaze
依赖项设置为^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
获得我想要的版本,但如果有的话,我宁愿以“正确”的方式执行此操作。
任何帮助将不胜感激。