NPM 插入符号不引入最新的次要版本

Posted

技术标签:

【中文标题】NPM 插入符号不引入最新的次要版本【英文标题】:NPM caret doesn't bring in newest minor version 【发布时间】:2018-09-13 04:37:24 【问题描述】:

在我的 package.json 中,我的依赖项之一是... "@packageXXX": "^0.7.0",

当我执行“npm outdated”时,我看到... @packageXXX 当前:0.7.0 想要:0.7.0 最新:0.8.0

当我执行“npm i”时 它不会安装最新的次要版本“0.8.0”

我的理解是插入符号应该更新到最新的次要版本,但事实并非如此。有人可以解释我做错了什么吗?

【问题讨论】:

【参考方案1】:

0.x.x 就是这种情况,因为前导零表示包尚未进入“稳定”版本。在您的包达到 1.x.x 之前,您需要手动进行这些更新(并且要小心...您的包还不稳定,这意味着可能会发生重大更改!)。

https://semver.org/

主要版本零 (0.y.z) 用于初始开发。什么都可以 随时改变。公共 API 不应该被认为是稳定的。

【讨论】:

我看到了我依赖“^1.0.1”并且 1.0.2 可用的确切内容,但它只安装 1.0.1...你如何解释?跨度> @Michael 你的包管理员犯了一个错误(或者你是)。如果你不使用 Yarn,我强烈推荐它。【参考方案2】:

根据nodejs documentation,包^0.7.0 -> 不会被npm update 更新为0.8.0

^:它只会做不改变最左边的非零数字的更新。如果写^0.13.0,运行npm update时,可以更新到0.13.1、0.13.2等,但不能更新到0.14.0以上。如果写^1.13.0,运行npm update时可以更新到1.13.1、1.14.0等,但不会更新到2.0.0或以上。

【讨论】:

以上是关于NPM 插入符号不引入最新的次要版本的主要内容,如果未能解决你的问题,请参考以下文章

npm - Semver 版本控制 - 使用插入符号“^”更新包

插入符号范围和 package-lock.json:如何使用它们获得最新的非破坏版本?

npm生成的package.json文件中依赖项版本号前的波浪号(~)和插入符号(^)是啥意思?

package.json 安装插件时版本号前缀解析

package.json 中的波浪号(~)和插入符号(^)有啥区别?

package.json 中的波浪号(~)和插入符号(^)有啥区别?