目前,npm软件包
mongoose是版本3.8.12.运行npm安装mongoose –save正确安装版本3.8.12,并将依赖关系保存到package.json,如下所示:
"dependencies": { "mongoose": "^3.8.12" }
如果你看到node_modules / mongoose / package.json,你可以看到安装的版本确实是3.8.12.然而,如果我现在运行npm更新,那么npm将继续安装一个不稳定版本的mongoose(3.9.0).我认为这是因为依赖条目中的插入符号,它告诉npm继续升级次要版本(即3.8到3.9).没关系,除了我不想要任何预发行版本.如果我修改依赖项并删除插入符号,那么npm更新按预期工作,除了我现在必须手动升级依赖关系版本,即使是次要和修补程序更新.
您可以从运行npm info mongoose看到他们有一个“最新”标签和“不稳定”标签.
所以清楚的是,npm安装使用最新版本,除非另有说明,而npm更新完全忽略了标签,并且抓住了它知道的最新的次要版本.
有没有办法修改依赖关系,所以npm更新将拉入最新的小版本,但忽略任何预发行版本?
UPDATE
如果我尝试使用3.x.x作为依赖关系,则会出现同样的问题.我希望仍然允许我通过未经预发布版本的次要版本进行升级,但情况并非如此:
波音乐(〜3.8.12)技术上有效,但它是一个带状物.它“工作”的唯一原因是因为引入的突破性变化是3.9.0 – 不稳定,波浪号不允许npm在次要版本上升级.如果这些“不稳定”的变化是在3.8.13-不稳定的情况下引入的,那么即使使用波浪号也会发生同样的问题.
更新2
我也尝试手动指定“最新”标签:^ 3.8.12-latest.没有改变任何东西npm更新完全忽略了标签,即使它明确地在依赖项列表中:/