语义化版本 SemVer(Semantic Versioning)
语义化的版本号必须采用 XYZ 格式(MAJOR.MINOR.PATCH),其中 X,Y 和 Z 是非负整数,并且不得包含前导零。X 是主要版本(主版本号),Y 是次要版本(次版本号),Z 是补丁版本(修订号)。每个元素必须在数值上增加。
如:1.2.3主要版本1,次要版本2,补丁版本3
a.主要版本更新:表示一个破坏兼容性的大变化;b.次要版本更新:表示不会破坏任何内容的新功能;c.补丁版本更新:表示不会破坏任何内容的错误修复。
换句话说:错误修复不影响 API 增加补丁版本,向后兼容的 API 添加或更改增加次要版本,向后不兼容的 API 更改增加主要版本
Q: v1.2.3是语义版本吗?A:这不是语义版本。但是,在语义版本前添加 v 前缀是一种常用方式(英文),表示它是版本号。通过版本控制经常可以看到将 version 缩写为 v。示例: git tag v1.2.3-m “Release version 1.2.3″,在这种情况下,v1.2.3是标记名称,语义版本是1.2.3。
当您使用 npm 安装包(并保存它)时,会在 package.json 中添加一个包含包名称和应该使用的 semver 的条目。默认情况下,npm 安装最新版本,并预先插入版本号,例如^1.2.12,这表示至少应该使用版本1.2.12,但任何高于此版本的版本都可以,只要它具有相同的主要版本,由于次要版本和补丁编号仅代表错误修正和非破坏性添加,你可以安全地使用任何更高版本的同一主要版本。阅读更多关于 semver 通配符的信息,请看这里。
指定版本号:如”classnames”:”2.2.5″,表示安装2.2.5的版本。
~版本号:如”babel-plugin-import”:”~1.1.0″,表示安装1.1.x 的最新版本(不低于1.1.0),但是不安装1.2.x,也就是说安装时不改变大版本号和次要版本号。
^版本号:如”antd”:”^3.1.4″,表示安装3.1.4及以上的版本,但是不安装4.0.0,也就是说安装时不改变大版本号。