正文
1. 语义化版本 SemVer(Semantic Versioning)
语义化的版本号必须采用
XYZ
格式(MAJOR.MINOR.PATCH),其中X
,Y
和Z
是非负整数,并且不得包含前导零。X
是主要版本(主版本号),Y
是次要版本(次版本号),Z
是补丁版本(修订号)。每个元素必须在数值上增加。如:
1.2.3
主要版本 1,次要版本 2,补丁版本 3a. 主要版本更新:表示一个破坏兼容性的大变化;
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
。
2.
当您使用 npm 安装包(并保存它)时,会在 package.json 中添加一个包含包名称和应该使用的 semver 的条目。默认情况下,npm 安装最新版本,并预先插入版本号,例如 “^1.2.12”,这表示至少应该使用版本 1.2.12,但任何高于此版本的版本都可以,只要它具有相同的主要版本,由于次要版本和补丁编号仅代表错误修正和非破坏性添加, 你可以安全地使用任何更高版本的同一主要版本。阅读更多关于 semver 通配符的信息,请看 这里。
3.
(1)指定版本号
:如 "classnames": "2.2.5"
,表示安装 2.2.5
的版本。
(2)~版本号
:如 "babel-plugin-import": "~1.1.0"
,表示安装 1.1.x
的最新版本(不低于 1.1.0
),但是不安装 1.2.x
,也就是说安装时不改变大版本号和次要版本号。
(3)^版本号
:如 "antd": "^3.1.4"
,表示安装 3.1.4
及以上的版本,但是不安装 4.0.0
,也就是说安装时不改变大版本号。
参考:https://segmentfault.com/a/1190000017239545