微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – “npm update”是在“npm安装”之后安装的稳定版本上安装模块的测试版本

目前,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更新完全忽略了标签,即使它明确地在依赖项列表中:/

解决方法

semver没有指定一种方法来分辨稳定和不稳定的版本.

正如你所说,插入符号将允许npm更新安装任何3.x.x版本,而波浪号可以允许任何3.8.x版本,即使下一个版本被称为3.8.13-破碎.

可悲的是,同样的事情发生在任何一个操作者,所以没有逃脱.

如您所见,您最好使用特定版本3.8.12.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐