语义化版本
语义化版本(Semantic Versioning),英文缩写是 SemVer。它是一套控制规范,约定了版本号及其更新方式,包含了相邻版本间的底层代码和修改内容的信息1。
版本格式通常为 X.Y.Z
的格式,其中 X
Y
Z
都是非负整数,不可以在数字前补零。
X
:是主版本号(major),当做了不兼容的 API 修改时,应该递增,次版本号和修订号重置为 0。
主版本号为 0 时,表示处于开发初始阶段,是 API 不稳定的版本。Y
:是次版本号(minor),当新增向下兼容的功能时,应该递增,修订号重置为 0。Z
:是修订号(patch):当做了向下兼容的问题修正时,应该递增。
可以根据情况在后面添加先行版本号(prerelease),先行版本号在修订号之后添加 -
,再加上一串由 .
分隔的标识符。例如:1.0.0-alpha.2
,添加先行版本号表示该版本不稳定而且可能无法满足预期的兼容性需求。
使用 npm 更新项目版本
npm
中有一个 version
命令可以非常方便地更新项目的版本2。你可以指定一个新的版本号或者是需要递增的字段,例如:
sh
npm version prerelease --preid=alpha
假设当前 package.json
的版本号是 1.0.0
,它会执行下面的操作:
- 将版本号从
1.0.0
更新到1.0.1-alpha.0
- 产生一个新的提交,提交信息为:
1.0.1-alpha.0
- 添加标签
v1.0.1-alpha.0
也可以自定义提交信息:
sh
npm version prerelease --preid=aplha -m "update version %s"
此时的提交信息为:update version 1.0.1-alpha.1
⚠️ 版本号前添加
v
,例如v1.2.0
表示版本标签,1.2.0
才是语义化版本。