在我升级到最新的稳定节点和npm之后,我尝试了npm安装时刻 --save. 它保存了 package.json 的输入与 caret ^ prefix. 此前,它是一个 tilde ~ prefix。
為什麼這些變化發生在npm? tilde ~ 和 caret ^ 之間的區別是什麼? 對其他人有什麼好處?
在我升级到最新的稳定节点和npm之后,我尝试了npm安装时刻 --save. 它保存了 package.json 的输入与 caret ^ prefix. 此前,它是一个 tilde ~ prefix。
為什麼這些變化發生在npm? tilde ~ 和 caret ^ 之間的區別是什麼? 對其他人有什麼好處?
当前回答
• 合理接近
~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
其他回答
版本号在合成中,指定每个部分具有不同的含义,合成分为三个部分,分为一个点。
大小小小小小小小小小小小小
大型、小型和折叠代表一个包的不同版本。
npm 使用 tilde (~) 和 caret (^) 指定哪个插件和较小的版本分别使用。
因此,如果你看到 ~1.0.2 它意味着安装版本 1.0.2 或最新的修复版本,如 1.0.4. 如果你看到 ^1.0.2 它意味着安装版本 1.0.2 或最新的小或修复版本,如 1.1.0.
帽子匹配可以被认为是“破碎”,因为它不会更新 ^0.1.2 到 0.2.0. 当软件出现时,使用 0.x.y 版本和帽子匹配只会匹配最后的不同数字(y)。这是为了目的。
规则是:在您的软件尚未成熟时使用 0.x.y 版本,并在您的公共 API 变化时增加中间数字发布它(因此,有 ^0.1.0 的人不会得到 0.2.0 更新,并且它不会破坏代码)。
Given a version number MAJOR.MINOR.PATCH, increment the:
MAJOR version when you make incompatible API changes,
MINOR version when you add functionality in a backwards-compatible manner, and
PATCH version when you make backwards-compatible bug fixes.
卡雷特 ^ 包含在同一大范围内的一切,大于一个特定的版本。
tilde 包含在同一小范围内的一切大于一个特定的版本。
例如,要指定可接受的版本范围高达 1.0.4,使用下列合成:
插件发布: 1.0 或 1.0.x 或 ~1.0.4 较小发布: 1 或 1.x 或 ^1.0.4 大型发布: * 或 x
有关序列编辑合成的更多信息,请参见 npm 半数计算器。
此分類上一篇
更多关于 npm 文档 关于 semantic 版本
蒂尔德:
关心:
^ 只冻结大编号. 它是当你仔细观察你的依赖,并准备快速改变你的代码,如果小编辑将不兼容. 它将更新你到最新的大编辑(第一个编辑)。 ^1.2.3 将匹配任何 1.x.x 编辑,包括 1.3.0,但它将停止在 2.0.0. Caret (^) 会给你回归兼容的新功能。
泰勒(~)
大型版本是固定的,小型版本是固定的,相匹配任何构建数字
"express": "~4.13.3"
~4.13.3 意味着它会检查 4.13.x 在哪里 x 是什么
可爱(^)
大型版本是固定的,匹配任何小型版本,匹配任何构建数字
"supertest": "^3.0.0"
^3.0.0 意味着它会检查 3.x.x 在哪里 x 是任何东西