package.json中的版本管理

当我们查看package.json中已安装的库的时候,会发现他们的版本号之前都会加一个符号,有的是插入符号^,有的是波浪符号~。那么他们到底有什么区别呢?

"dependencies": {
  "bluebird": "^3.3.4",
  "body-parser": "~1.15.2"
}

波浪符号(~):它会更新到当前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.PATCH1是marjor version,15是minor version,2是patch version。

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

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

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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,020评论 3 119
  • 早上九点半的咖啡厅,人不算太多,却也熙熙攘攘占据了整个大厅的各个角落,我找了一个最不起眼光线却特别好的地方,放下包...
    艾文洱阅读 347评论 10 16
  • 文/思小妞 (一) W被一位男生追求。那位男生是同城不同校的一名大学生,他们相识于一次旅行中。每周末,那位男生会花...
    思小妞无后缀阅读 4,609评论 55 137
  • 晚上打电话的时候,你又提了一下前几天跟我商量的事,在你找到这份新工作的时候。 因为入职培训,寒假你要公派去意大利学...
    蒙初阅读 306评论 2 1