在我升级到最新的稳定节点和npm之后,我尝试了npm安装时刻 --save. 它保存了 package.json 的输入与 caret ^ prefix. 此前,它是一个 tilde ~ prefix。
為什麼這些變化發生在npm? tilde ~ 和 caret ^ 之間的區別是什麼? 對其他人有什麼好處?
在我升级到最新的稳定节点和npm之后,我尝试了npm安装时刻 --save. 它保存了 package.json 的输入与 caret ^ prefix. 此前,它是一个 tilde ~ prefix。
為什麼這些變化發生在npm? tilde ~ 和 caret ^ 之間的區別是什麼? 對其他人有什麼好處?
当前回答
一条线路解释
標準版本系統是 major.minor.build (例如 2.4.1)
npm 检查并根据这些字符调整特定包的版本
大型版本是固定的,小型版本是固定的,相匹配任何构建数字
例如: ~2.4.1 意味着它会检查 2.4.x 在哪里 x 是什么
^ : 大型版本固定,匹配任何小型版本,匹配任何构建数字
例如: ^2.4.1 意味着它会检查 2.x.x 在哪里 x 是什么
其他回答
Tilde ~ 相匹配较小的版本,如果您安装了一个包含 1.4.2 并在您的安装后,版本 1.4.3 和 1.4.4 也可用,如果在您的 package.json 它被用作 ~1.4.2 然后 npm 安装在您的项目后升级将安装 1.4.4 在您的项目。
Caret ^ 相匹配大版本,如果 1.4.2 包安装在您的项目中,并在您的安装 1.5.0 发布后 ^ 将安装大版本。
固定版本 如果您不希望在每个安装中更改包的版本,则使用固定版本与任何特殊字符,例如“1.4.2”
最新版本 * 如果您想要安装最新版本,则仅在包名前使用 *。
半体分为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
查看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
卡雷特 ^ 包含在同一大范围内的一切,大于一个特定的版本。
tilde 包含在同一小范围内的一切大于一个特定的版本。
例如,要指定可接受的版本范围高达 1.0.4,使用下列合成:
插件发布: 1.0 或 1.0.x 或 ~1.0.4 较小发布: 1 或 1.x 或 ^1.0.4 大型发布: * 或 x
有关序列编辑合成的更多信息,请参见 npm 半数计算器。
此分類上一篇
更多关于 npm 文档 关于 semantic 版本
^ is 1 [any] [any] (latest minor version) ~ 是 1.2 [any] (latest patch)
一个很好的阅读是这个博客帖子关于如何半数适用于npm和他们正在做什么,使它符合半数标准 http://blog.npmjs.org/post/98131109725/npm-2-0-0