Semantic Versioning (SemVer) 在线验证与比较工具
| 版本格式 | MAJOR.MINOR.PATCH |
|---|---|
| MAJOR | 不兼容的API修改 |
| MINOR | 向下兼容的功能新增 |
| PATCH | 向下兼容的问题修复 |
| 预发布 | 1.0.0-alpha.1、1.0.0-beta.2 |
| 构建元数据 | 1.0.0+20130313144700 |
| 范围 ^ | 兼容版本:^1.2.3 = >=1.2.3 <2.0.0 |
| 范围 ~ | 近似版本:~1.2.3 = >=1.2.3 <1.3.0 |
语义版本(Semantic Versioning,简称SemVer)是一套版本号管理规范,格式为 MAJOR.MINOR.PATCH(主版本.次版本.补丁版本)。当你做了不兼容的API修改时增加主版本号,新增向下兼容功能时增加次版本号,修复向下兼容问题时增加补丁版本号。这套规范被npm、Maven等几乎所有现代包管理器采用。
^1.2.3 表示兼容版本,允许更新到不改变主版本号的最新版本(>=1.2.3 <2.0.0),适用于希望自动获取新功能的场景。~1.2.3 表示近似版本,只允许补丁级别的更新(>=1.2.3 <1.3.0),更加保守安全,适用于生产环境的依赖锁定。
预发布版本通过在版本号后添加连字符和标识符来表示,如 1.0.0-alpha.1、2.0.0-beta.3、1.0.0-rc.1。预发布版本的优先级低于对应的正式版本,常用标识符包括:alpha(内部测试)、beta(公开测试)、rc(候选发布版)。
在package.json的dependencies中,推荐使用 ^ 范围符号。例如 "lodash": "^4.17.21" 表示接受所有4.x.x版本。对于0.x.x版本要特别小心——^0.2.3 等价于 ~0.2.3,因为0.x版本的主版本号变化可能包含不兼容修改。