一、什么是语义化版本
语义化版本的英文是:Semantic Versioning
。
它是由 Gravatars 创办者兼 GitHub 共同创办者 Tom Preston-Werner 所建立的一个有关如何命名软件和库(包)版本的规范,用以解决在大型项目中对依赖的版本失去控制的问题。
例如你可能因为害怕不兼容而不敢去更新依赖
现在 Semantic Versioning 已经在开源社区中得到了广泛的认同,Node.js 的包管理工具 npm 也完全基于 Semantic Versioning 来管理依赖的版本。
而 SemVer 是语义化版本的一个具体实现,目前是由 npm 的团队维护的,实现了版本和版本范围的解析、计算、比较。
SemVer 的 github 仓库:https://github.com/semver/semver
二、SemVer 规范
1. 基本格式
版本格式:**主版本号.次版本号.修订号 (major.minor.patch)**
- 主版本号:当你做了不兼容的 API 修改
- 次版本号:当你做了向下兼容的功能性新增
- 修订号:当你做了向下兼容的问题修正
先行版本号及版本编译信息可以加到“主版本号.次版本号.修订号”的后面,作为延伸。
2. 先行版本号
先行版本号可以作为发布正式版之前的版本。
格式是在修订号后面加上一个连接号-
,再加上一连串以点.
分割的标识符,标识符可以由英文、数字和连接号组成[0-9A-Za-z-]
-aplha
:是内测版,一般不想外部发布,会有很多 bug。一般只有测试人员使用。-beta
:也是测试版本,这个阶段的版本会一直加入新的功能。再 Alpha 版之后推出-rc
(Release Candidate
):发行候选的版本。RC 版不会再加入新的功能了,主要是重于排错。