0、使用 语义版本号 的软件必须声明 公共 API;
1、正常的版本号 X.Y.Z,其中 X、Y、Z 表示非负整数;
2、X is the major version, Y is the minor version, and Z is the patch version
3、当major version为0 时(0.x.y),表示任何东西都会改变,公共 API 不能认为是稳定的。
4、版本 1.0.0 开始定义公共 API,之后,新版本中的改动独立于公共 API
5、当修改了向后兼容的 bug 时,Patch version Z (x.y.Z | x > 0) 必须 + 1;
6、当新的向后兼容特性引进到公共 API 时,Minor version Y (x.Y.z | x > 0) 必须 +1;当有 公共API 标记为 deprecated 时,也需要 + 1;如果有大量的 private code 修改时,也可以 + 1;当 minor version + 1 时,patch version 必须重置为 0;
7、当有向后不兼容的引入到公共 API 时,Major version X (X.y.z | X > 0) 必须 + 1,然后 minor version 和 patch version 必须重置为 0;
8、pre-release version Examples: 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7, 1.0.0-x.7.z.92. A pre-release version indicates that the version is unstable and might not satisfy the intended compatibility requirements as denoted by its associated normal version.
9、Build metadata version Examples: 1.0.0-alpha+001, 1.0.0+20130313144700, 1.0.0-beta+exp.sha.5114f85. **Build metadata**SHOULD be ignored when determining version precedence.
10、优先级比较:
- Major, minor, and patch versions are always compared numerically. Example: 1.0.0 < 2.0.0 < 2.1.0 < 2.1.1.
- When major, minor, and patch are equal, a pre-release version has lower precedence than a normal version. Example: 1.0.0-alpha < 1.0.0.
- 两个有相同 major、minor 和 patch 版本号的 pre-release 版本必须通过从左到右地比较每一个点分标识符直到出现不同字符来比较优先级,比较规则如下:(1)数字则根据递增原则,越大的,则优先级越高;(2)有字母的,则根据 ASCII 码顺序;(3)非数字标志符 优先级高于数字标志符;(4)有更多 pre-release field 的集合,优先级更高。Example: 1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0.