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?