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

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


当前回答

半体分为3个主要部分,由点分裂。

major.minor.patch
1.0.0

这些不同的主要、小型和折叠是用来识别不同的发行。 tide(~)和caret(^)是用来识别哪些小型和折叠版本用于包装版本。

~1.0.1
 Install 1.0.1 or **latest patch versions** such as 1.0.2 ,1.0.5
^1.0.1
 Install 1.0.1 or **latest patch and minor versions** such as 1.0.2 ,1.1.0 ,1.1.1

其他回答

卡雷特 ^ 包含在同一大范围内的一切,大于一个特定的版本。

tilde 包含在同一小范围内的一切大于一个特定的版本。

例如,要指定可接受的版本范围高达 1.0.4,使用下列合成:

插件发布: 1.0 或 1.0.x 或 ~1.0.4 较小发布: 1 或 1.x 或 ^1.0.4 大型发布: * 或 x

有关序列编辑合成的更多信息,请参见 npm 半数计算器。

此分類上一篇

更多关于 npm 文档 关于 semantic 版本

查看NPM Docs 和 Semver Docs:

~版本“大约相当于版本”,将更新您到所有未来的修复版本,而不会增加较小的版本. ~1.2.3 将使用版本从 1.2.3 到 <1.3.0. ^版本“兼容版本”,将更新您到所有未来的较小的/修复版本,而不会增加大版本. ^2.3.4 将使用版本从 2.3.4 到 <3.0.0.

查看下面的评论 例外,特别是预一版本,如 ^0.2.3

版本号在合成中,指定每个部分具有不同的含义,合成分为三个部分,分为一个点。

大小小小小小小小小小小小小

大型、小型和折叠代表一个包的不同版本。

npm 使用 tilde (~) 和 caret (^) 指定哪个插件和较小的版本分别使用。

因此,如果你看到 ~1.0.2 它意味着安装版本 1.0.2 或最新的修复版本,如 1.0.4. 如果你看到 ^1.0.2 它意味着安装版本 1.0.2 或最新的小或修复版本,如 1.1.0.

蒂尔德:

关心:

^ 只冻结大编号. 它是当你仔细观察你的依赖,并准备快速改变你的代码,如果小编辑将不兼容. 它将更新你到最新的大编辑(第一个编辑)。 ^1.2.3 将匹配任何 1.x.x 编辑,包括 1.3.0,但它将停止在 2.0.0. Caret (^) 会给你回归兼容的新功能。

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

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