在我升级到最新的稳定节点和npm之后,我尝试了npm安装时刻 --save. 它保存了 package.json 的输入与 caret ^ prefix. 此前,它是一个 tilde ~ prefix。
為什麼這些變化發生在npm? tilde ~ 和 caret ^ 之間的區別是什麼? 對其他人有什麼好處?
在我升级到最新的稳定节点和npm之后,我尝试了npm安装时刻 --save. 它保存了 package.json 的输入与 caret ^ prefix. 此前,它是一个 tilde ~ prefix。
為什麼這些變化發生在npm? tilde ~ 和 caret ^ 之間的區別是什麼? 對其他人有什麼好處?
当前回答
Tilde ~ 指定小型版本发布
Caret ^ 指定主要版本发布
例如,如果包版本为 4.5.2,更新时:
~4.5.2 将安装最新版本 4.5.x (MINOR 版本)
^ 4.5.2 将安装最新版本 4.x.x (大版本)
其他回答
泰勒(~)
大型版本是固定的,小型版本是固定的,相匹配任何构建数字
"express": "~4.13.3"
~4.13.3 意味着它会检查 4.13.x 在哪里 x 是什么
可爱(^)
大型版本是固定的,匹配任何小型版本,匹配任何构建数字
"supertest": "^3.0.0"
^3.0.0 意味着它会检查 3.x.x 在哪里 x 是任何东西
關於這個問題,您可以檢查《作曲者文档》的版本,但在這裡簡短地說:
Tilde Version Range (~) - ~1.2.3 相当于 >=1.2.3 <1.3.0 Caret Version Range (^) - ~1.2.3 相当于 >=1.2.3 <2.0.0
因此,使用 Tilde 您将获得自动修复的更新,但小型和大型版本将不会更新;但是,如果您使用 Caret,您将获得修复和小型版本,但您将不会获得大型(破坏变更)版本。
Tilde 版本被认为是“更安全”的方法,但如果你使用可靠的依赖性(保存良好的图书馆),你不应该有任何问题与 Caret 版本(因为小变化不应该是破坏变化。
您可能应该审查此 stackoverflow 帖子关于组合器安装和组合器更新之间的差异。
只要第一个数字(“大”)至少是1:
它是使用的,当你准备好接受只有错误修复(第三个数字的升级),但不需要任何其他变化,甚至更小的升级,添加功能。
^ 只锁定大编号. 它被用,当您愿意收到错误修复(第三编号的改进)和添加功能的小升级,但不应该破坏现有代码(第二编号的改进)。
除此之外, ^ 不受旧 npm 版本的支持,并且应谨慎使用。
因此, ^ 是一个很好的默认,但它不是完美的. 我建议仔细选择和设置最有用的半导体操作器。
(重定向以避免说“修复”和“错误修复”与冲突使用“修复”,这令人困惑)
<major>.<minor>.<patch>-beta.<beta> == 1.2.3-beta.2
使用 npm 半数计算机进行测试. 虽然解释 ^ (包含在同一大范围中的特定版本以上的一切) 和 ~ (包含在同一小范围中的特定版本以上的一切) 不是百分之百正确的,计算机似乎工作好。
允许或取消变更
Pin 版本: 1.2.3. 使用 ^ (像头)。 允许从左边的第二个非零级别更新: ^0.2.3 意味着 0.2.3 <= v < 0.3. 使用 ~ (如尾)。 一般冷冻右级或设置零,如果错过: ~1 意味着 1.0.0 <= v < 2.0.0 ~1.2 意味着 1.2.0 <= v < 1.3.0. ~1.2.4 意味着 1.2.4 <= v < 1.3.0. Ommit 右级别: 0.2 意味着 0.2 <= v < 1. 不同于 ~ 因为: 开始错过的级别版本
设置大级启动,并允许更新向上
* or "(empty string) any version
1 v >= 1
~0 (0) 0.0 <= v < 1
0.2 0.2 <= v < 1 // Can't do that with ^ or ~
~1 (1, ^1) 1 <= v < 2
^1.2 1.2 <= v < 2
^1.2.3 1.2.3 <= v < 2
^1.2.3-beta.4 1.2.3-beta.4 <= v < 2
冷却低水平
^0.0 (0.0) 0 <= v < 0.1
~0.2 0.2 <= v < 0.3
~1.2 1.2 <= v < 1.3
~0.2.3 (^0.2.3) 0.2.3 <= v < 0.3
~1.2.3 1.2.3 <= v < 1.3
~1.2.3-beta.4 1.2.3-beta.4 <= v < 1.2.4 (only beta or pr allowed)
^0.0.3-beta 0.0.3-beta.0 <= v < 0.0.4 or 0.0.3-pr.0 <= v < 0.0.4 (only beta or pr allowed)
^0.0.3-beta.4 0.0.3-beta.4 <= v < 0.0.4 or 0.0.3-pr.4 <= v < 0.0.4 (only beta or pr allowed)
解除更新
1.2.3 1.2.3
^0.0.3 (0.0.3) 0.0.3
注意: 缺失大、小、修复或指定无数的beta,与缺失的水平相同。
蒂尔德:
关心:
^ 只冻结大编号. 它是当你仔细观察你的依赖,并准备快速改变你的代码,如果小编辑将不兼容. 它将更新你到最新的大编辑(第一个编辑)。 ^1.2.3 将匹配任何 1.x.x 编辑,包括 1.3.0,但它将停止在 2.0.0. Caret (^) 会给你回归兼容的新功能。