本节书摘来自异步社区《JavaScript开发框架权威指南》一书中的第1章,第1.5节,作者:【美】Tim Ambler , Nicholas Cloud著,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.5 语义化版本控制
如果安装了jQuery(见清单),那么请查看项目的Bower清单。你所看到的应当与清单相仿。
清单1-7 语义化版本号
"dependencies": {
"jquery": "~2.1.3"
}
清单中的版本号2.1.3(请暂时忽略~)就是所谓的语义化版本号(Semver,Semantic Version)。语义化版本控制能够帮助开发者按照通用格式为其项目指定版本号。该格式如下所示。
Version X.Y.Z(Major.Minor.Patch)
语义化版本格式要求开发者创建定义明晰的API(通过文档或者自文档化的代码),从而为用户使用软件库提供唯一的切入点。新启动的项目一般从版本0.0.0开始,然后随着新版本的推出,版本号逐渐增加。通常认为版本号在1.0.0以下的项目正处于紧密开发中,此时允许在不变更主版本号(Major)的情况下,对其API进行重大改变。而版本号1.0.0及以上的项目,在更改版本号时需要遵守以下规则。
当更新导致用户使用项目API的方式发生重大变化的时候,项目的主版本号应当发生 改变。
当以向后兼容的方式添加新特性的时候 (也就是说,现有API不会失效),项目的次版本号应当发生改变。
当以向后兼容的方式修正bug的时候,项目的修订号(Patch Version Number)应当发生改变。
这些规则可以让开发者了解任意两个版本之间的变化程度。随着Bower清单的增长以及项目所需依赖项的增多,这些信息的作用会逐渐显现出来。
注意:
清单中的“~”号表示无论何时运行install命令,都允许以“相对接近”2.1.3的版本对jQuery进行升级。如果“相对接近”和“自动安装”这样的字眼放在一起使用让你觉得浑身不舒服的话,那就对了!最佳实践建议,在Bower中引用依赖项的时候,应当避免使用“~X.Y.Z”这样的格式。相反,你最好明确指定要在项目中引入的依赖项的版本。当有更新发布时,你可以手动检查,并决定是否以及何时进行升级。本章随后的示例将会遵从此建议。