在我升级到最新的稳定节点和npm之后,我尝试了npm安装时刻 --save. 它保存了 package.json 的输入与 caret ^ prefix. 此前,它是一个 tilde ~ prefix。

為什麼這些變化發生在npm? tilde ~ 和 caret ^ 之間的區別是什麼? 對其他人有什麼好處?


当前回答

^ is 1 [any] [any] (latest minor version) ~ 是 1.2 [any] (latest patch)

一个很好的阅读是这个博客帖子关于如何半数适用于npm和他们正在做什么,使它符合半数标准 http://blog.npmjs.org/post/98131109725/npm-2-0-0

其他回答

你可能已经在 package.json 中看到了 tilde(~)和 caret(^)。

当您安装 npm 时刻 --save 时,它将保存包.json 的输入,并使用 Caret (^) 预定。

泰尔德(~)

在最简单的术语中,tilde(~)匹配最新的小版本(中间号)。 ~1.2.3 将匹配所有 1.2.x 版本,但将错过 1.3.0。

卡雷特(^)

它将更新您到最新的主要版本(第一个数字)。 ^1.2.3 将匹配任何 1.x.x 发布,包括 1.3.0,但将停止在 2.0.0。

参考: https://medium.com/@Hardy2151/caret-and-tilde-in-package-json-57f1cbbe347b

一条线路解释

標準版本系統是 major.minor.build (例如 2.4.1)

npm 检查并根据这些字符调整特定包的版本

大型版本是固定的,小型版本是固定的,相匹配任何构建数字

例如: ~2.4.1 意味着它会检查 2.4.x 在哪里 x 是什么

^ : 大型版本固定,匹配任何小型版本,匹配任何构建数字

例如: ^2.4.1 意味着它会检查 2.x.x 在哪里 x 是什么

^ is 1 [any] [any] (latest minor version) ~ 是 1.2 [any] (latest patch)

一个很好的阅读是这个博客帖子关于如何半数适用于npm和他们正在做什么,使它符合半数标准 http://blog.npmjs.org/post/98131109725/npm-2-0-0

我想添加官方的npmjs文件,其中描述了所有版本特性方法,包括在问题上提到的方法。

value desc
~version Approximately equivalent to version, i.e., only accept new patch versions
See npm semver - Tilde Ranges
^version Compatible with version, i.e., accept new minor and patch versions
See npm semver - Caret Ranges
version Must match version exactly
>version Must be greater than version
>=version etc
<version
<=version
1.2.x 1.2.0, 1.2.1, etc., but not 1.3.0
* Matches any version
latest Obtains latest release

其他版本规格包括 GitHub URL 和 GitHub 用户 repo 、本地路径和包含特定 npm 标签的包

官方DOC

npm docs > package.json > dependencies npm docs > semver > 版本 semver (7)

Tilde ~ 指定小型版本发布

Caret ^ 指定主要版本发布

例如,如果包版本为 4.5.2,更新时:

~4.5.2 将安装最新版本 4.5.x (MINOR 版本)

^ 4.5.2 将安装最新版本 4.x.x (大版本)