package.json中tilde(〜)和caret(^)之间有什么区别?
在升级到最新的稳定node和npm ,我尝试了npm install moment --save 。 它用caret(^)前缀保存package.json的条目。 以前,它是一个tilde(~)前缀。
npm进行这些更改? tilde(~)和caret(^)之间的区别是什么? 用最简单的术语来说,波形符与最新的次要版本(中间数字)匹配。 〜1.2.3将匹配所有1.2.x版本,但会错过1.3.0。
另一方面,插入符号更轻松。 它会将您更新到最新的主要版本(第一个数字)。 ^ 1.2.3将匹配包括1.3.0在内的任何1.xx版本,但会在2.0.0版本中推迟。
http://fredkschott.com/post/2014/02/npm-no-longer-defaults-to-tildes/
我想添加正式的npmjs文档,其中描述了版本特异性的所有方法,包括问题中提到的那些 -
https://www.npmjs.org/doc/files/package.json.html
https://docs.npmjs.com/misc/semver#x-ranges-12x-1x-12-
~version “大致相当于版本”请参阅npm semver - Tilde范围和semver(7) ^version “与版本兼容”请参阅npm semver - Caret Ranges&semver(7) version必须完全匹配版本 >version必须大于版本 >=version等 <version <=version 1.2.x 1.2.0,1.2.1等,但不是1.3.0 http://sometarballurl (这可能是将在本地下载和安装的tarball的URL *匹配任何版本 latest获得最新版本 以上列表并非详尽无遗。 其他版本说明符包括GitHub网址和GitHub用户回购,本地路径和包含特定npm标签的包
Npm允许安装比指定的更新版本的软件包。 使用代字号( ~ )为您提供错误修复版本和插入符号( ^ ),以及向后兼容的新功能。
问题是旧版本通常不会收到太多的错误修复,因此npm使用脱字号( ^ )作为--save的默认值。

根据:“Semver解释 - 为什么我的package.json中有一个插入符号(^)?”。
请注意 ,这些规则适用于1.0.0以上版本,并不是每个项目都遵循语义版本控制。 对于版本0.xx,插入符只允许修补程序更新,即它的行为与代字符相同。 请参阅“插入范围”
以下是对这些概念的视觉解释:

来源:“语义版本化作弊表”。
链接地址: http://www.djcxy.com/p/723.html上一篇: What's the difference between tilde(~) and caret(^) in package.json?
