在我升级到最新的稳定节点和npm之后,我尝试了npm安装时刻 --save. 它保存了 package.json 的输入与 caret ^ prefix. 此前,它是一个 tilde ~ prefix。
為什麼這些變化發生在npm? tilde ~ 和 caret ^ 之間的區別是什麼? 對其他人有什麼好處?
在我升级到最新的稳定节点和npm之后,我尝试了npm安装时刻 --save. 它保存了 package.json 的输入与 caret ^ prefix. 此前,它是一个 tilde ~ prefix。
為什麼這些變化發生在npm? tilde ~ 和 caret ^ 之間的區別是什麼? 對其他人有什麼好處?
当前回答
我想添加官方的npmjs文件,其中描述了所有版本特性方法,包括在问题上提到的方法。
value | desc |
---|---|
~version |
Approximately equivalent to version, i.e., only accept new patch versions See npm semver - Tilde Ranges |
^version |
Compatible with version, i.e., accept new minor and patch versions See npm semver - Caret Ranges |
version |
Must match version exactly |
>version |
Must be greater than version |
>=version |
etc |
<version |
|
<=version |
|
1.2.x |
1.2.0, 1.2.1, etc., but not 1.3.0 |
* |
Matches any version |
latest |
Obtains latest release |
其他版本规格包括 GitHub URL 和 GitHub 用户 repo 、本地路径和包含特定 npm 标签的包
官方DOC
npm docs > package.json > dependencies npm docs > semver > 版本 semver (7)
其他回答
Tilde ~ 指定小型版本发布
Caret ^ 指定主要版本发布
例如,如果包版本为 4.5.2,更新时:
~4.5.2 将安装最新版本 4.5.x (MINOR 版本)
^ 4.5.2 将安装最新版本 4.x.x (大版本)
一条线路解释
標準版本系統是 major.minor.build (例如 2.4.1)
npm 检查并根据这些字符调整特定包的版本
大型版本是固定的,小型版本是固定的,相匹配任何构建数字
例如: ~2.4.1 意味着它会检查 2.4.x 在哪里 x 是什么
^ : 大型版本固定,匹配任何小型版本,匹配任何构建数字
例如: ^2.4.1 意味着它会检查 2.x.x 在哪里 x 是什么
• 合理接近
~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
我想添加官方的npmjs文件,其中描述了所有版本特性方法,包括在问题上提到的方法。
value | desc |
---|---|
~version |
Approximately equivalent to version, i.e., only accept new patch versions See npm semver - Tilde Ranges |
^version |
Compatible with version, i.e., accept new minor and patch versions See npm semver - Caret Ranges |
version |
Must match version exactly |
>version |
Must be greater than version |
>=version |
etc |
<version |
|
<=version |
|
1.2.x |
1.2.0, 1.2.1, etc., but not 1.3.0 |
* |
Matches any version |
latest |
Obtains latest release |
其他版本规格包括 GitHub URL 和 GitHub 用户 repo 、本地路径和包含特定 npm 标签的包
官方DOC
npm docs > package.json > dependencies npm docs > semver > 版本 semver (7)
關於這個問題,您可以檢查《作曲者文档》的版本,但在這裡簡短地說:
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 帖子关于组合器安装和组合器更新之间的差异。