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

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


当前回答

只要第一个数字(“大”)至少是1:

它是使用的,当你准备好接受只有错误修复(第三个数字的升级),但不需要任何其他变化,甚至更小的升级,添加功能。

^ 只锁定大编号. 它被用,当您愿意收到错误修复(第三编号的改进)和添加功能的小升级,但不应该破坏现有代码(第二编号的改进)。

除此之外, ^ 不受旧 npm 版本的支持,并且应谨慎使用。

因此, ^ 是一个很好的默认,但它不是完美的. 我建议仔细选择和设置最有用的半导体操作器。

(重定向以避免说“修复”和“错误修复”与冲突使用“修复”,这令人困惑)

其他回答

• 合理接近

   ~1.1.5: 1.1.0 <= accepted < 1.2.0

标签: 兼容

   ^1.1.5: 1.1.5 <= accepted < 2.0.0

   ^0.1.3: 0.1.3 <= accepted < 0.2.0

   ^0.0.4: 0.0.4 <= accepted < 0.1.0

Tilde ~ 指定小型版本发布

Caret ^ 指定主要版本发布

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

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

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

只要第一个数字(“大”)至少是1:

它是使用的,当你准备好接受只有错误修复(第三个数字的升级),但不需要任何其他变化,甚至更小的升级,添加功能。

^ 只锁定大编号. 它被用,当您愿意收到错误修复(第三编号的改进)和添加功能的小升级,但不应该破坏现有代码(第二编号的改进)。

除此之外, ^ 不受旧 npm 版本的支持,并且应谨慎使用。

因此, ^ 是一个很好的默认,但它不是完美的. 我建议仔细选择和设置最有用的半导体操作器。

(重定向以避免说“修复”和“错误修复”与冲突使用“修复”,这令人困惑)

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

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

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

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

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

此分類上一篇

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

不是一个答案,当然,但一个观察似乎已经被忽略了。

卡雷特的描述范围:

查看: https://github.com/npm/node-semver#caret-ranges-123-025-004

允许在 [大、小、折叠] 卷中不改变左最不零的数字的变更。

意思是 ^10.2.3 相匹配 10.2.3 <= v < 20.0.0

在版本 11.x.x 到 19.x.x 将打破您的代码。

我认为他们意味着留下了大多数非零数字字段. 在 SemVer 中,不需要单数字字段的数字字段。