使用以下语法声明对包的依赖关系有什么区别:“ == 1.2.3”(据我所知,在spec中有明确说明)和仅“ 1.2.3” (我也看到正在使用它,但是在脚本中没有解释)?这就像一个软约束,使软件包管理器有更大的自由来解析到另一个版本?
谢谢
答案 0 :(得分:4)
依赖关系可能被指定为:
"== 1.2.3"
实际上与"1.2.3"
相同,表示“正是这个版本” ">= 1.2.3"
,意思是“任何大于或等于该版本的版本,包括主要版本的更新” "<= 1.2.3"
,意思是“不大于该版本的任何版本” "~> 1.2.3"
,意思是“相同的主要版本,相同的次要版本,其子版本大于或等于3
” "~> 1.2"
,意思是“相同的主要版本,任何次要版本大于或等于2
” 不允许使用语法"~> 1"
,因为它实际上与">= 1.0.0"
相同。
因此,为了获得更大的灵活性,如果人们使用适当的语义版本控制信任程序包,通常会进行"~> 1.2.3"
或"~> 1.2"
的操作。不建议使用">= 1.2.3"
,因为即使使用语义版本控制,主要版本也可能包含重大更改。
答案 1 :(得分:2)
我相信“ 1.2.3”等于“ == 1.2.3”,这是我从未见过的。但很遗憾,我无法提供参考。但是它的行为总是像完全匹配。
答案 2 :(得分:1)
根据Version documentation。您所说的是要求。
版本:
简而言之,版本由三个数字表示
要求:
要求允许您指定要使用的给定依赖项的哪个版本。需求支持
>=
,<=
,>
,==
等常见的运算符,以及像人们期望的那样工作的朋友
Version
文档和mix documentation都没有直接要求指定版本号(没有操作符),因此这可能是非标准做法,最好避免。
通常用~>
运算符指定要求,因为该要求指定可以使用具有更高最低数字的版本。例如,~> 1.1.0
将允许使用1.1.1
,1.1.2
等,但不允许使用1.2.0
。有一个useful table in the official documentation。