详细内容可以查看npm的官方文档: https://docs.npmjs.com/misc/semver#advanced-range-syntax

上面的链接中高级范围语法一节,表示版本范围可以用的符号有 - x ~ ^

这里简单把 ^ 和 ~ 的区别摘抄一下,备忘。
一个完整的版本号组表示为: [主要版本号,次要版本号,补丁版本号]


Package.json中dependencies依赖包中^符号和~符号前缀的区别

http://blog.csdn.net/emilyorchid/article/details/51540937


版本号 x.y.z :其中z 表示一些小的bugfix, 更改z的号,

y表示一些大的版本更改,比如一些API的变化

x表示一些设计的变动及模块的重构之类的,会升级x版本号

在package.json里面dependencies依赖包的版本号前面的符号有两种,一种是~,一种是^。



  • ~的意思是匹配最近的小版本 比如~1.0.2将会匹配所有的1.0.x版本,但不匹配1.1.0
  • ^的意思是最近的一个大版本 比如1.0.2 将会匹配 所有 1.x.x, 但不包括2.x.x


Node.js中package.json中库的版本号详解(^和~区别)

http://blog.csdn.net/njweiyukun/article/details/70309066

   当我们查看package.json中已安装的库的时候,会发现他们的版本号之前都会加一个符号,有的是插入符号(^),有的是波浪符号(~)。那么他们到底有什么区别呢?先贴一个例子,对照例子来做解释:

[java]  view plain  copy
 print ?
  1. "dependencies": {  
  2.     "bluebird""^3.3.4",  
  3.     "body-parser""~1.15.2"  
  4.   }  

bluebird的版本号:^3.3.4

body-parse的版本号:~1.15.2


当我们使用最新的Node运行‘npm instal --save xxx',的时候,他会优先考虑使用插入符号(^)而不是波浪符号(~)了。

这对于你来说意味这什么呢?首先我们需要理解这两者(~和^)的区别。

波浪符号(~):他会更新到当前minor version(也就是中间的那位数字)中最新的版本。放到我们的例子中就是:body-parser:~1.15.2,这个库会去匹配更新到1.15.x的最新版本,如果出了一个新的版本为1.16.0,则不会自动升级。波浪符号是曾经npm安装时候的默认符号,现在已经变为了插入符号。

插入符号(^):这个符号就显得非常的灵活了,他将会把当前库的版本更新到当前major version(也就是第一位数字)中最新的版本。放到我们的例子中就是:bluebird:^3.3.4,这个库会去匹配3.x.x中最新的版本,但是他不会自动更新到4.0.0。

总结一下:

~1.15.2 :=  >=1.15.2 <1.16.0     

^3.3.4 := >=3.3.4 <4.0.0


最后解释下之前提到的minor verision和major version:

1.15.2对应就是MAJOR,MINOR.PATCH:1是marjor version;15是minor version;2是patch version。

MAJOR:这个版本号变化了表示有了一个不可以和上个版本兼容的大更改。

MINOR:这个版本号变化了表示有了增加了新的功能,并且可以向后兼容。

PATCH:这个版本号变化了表示修复了bug,并且可以向后兼容。

因为major version变化表示可能会影响之前版本的兼容性,所以无论是波浪符号还是插入符号都不会自动去修改major version,因为这可能导致程序crush,可能需要手动修改代码




GitHub 加速计划 / de / Dependencies
8.61 K
704
下载
A rewrite of the old legacy software "depends.exe" in C# for Windows devs to troubleshoot dll load dependencies issues.
最近提交(Master分支:3 个月前 )
1997a400 - 2 年前
2f423539 - 2 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐