什么是语义版本控制(Semver)?

语义版本控制是一种规范,用于清晰传达代码更新的兼容性和变化类型。

工程化与构建 简单 版本控制 工程化 构建

Semver 指的是语义版本控制(Semantic Versioning),是一种软件版本命名和控制的规范,用于清晰传达代码更新的兼容性和变化类型。它于 2009 年由 Abraham Williams 提出,核心格式为 MAJOR. MINOR. PATCH,各部分含义如下:

  • MAJOR 版本号:当项目做不向后兼容的 API 更改时,必须递增此数字。例如,从 v1.0.0 到 v2.0.0 表示大规模破坏性变更。
  • MINOR 版本号:当添加新功能但保持向后兼容性时递增。例如,v1.1.0 引入新特性,但仍兼容 v1.0.0。
  • PATCH 版本号:当修复向后兼容的漏洞时递增,如从 v1.0.0 到 v1.0.1。

语义版本控制还包括符号来表示范围:

  • 波浪号 ~:允许 PATCH 级别变动但限制 MINOR 和 MAJOR。例如 ~1.2.3 匹配 1.2.4 至 1.2.x,但不匹配 1.3.0。
  • 插入符号 ^:允许 MINOR 和 PATCH 变动但限制 MAJOR。例如 ^1.2.3 匹配 1.3.0 至 2.0.0 前版本。

好处包括:依赖管理更可靠(例如在包管理器如 npm 中避免冲突)、开发沟通透明化、以及支持自动化构建过程(如决定自动升级路径)。它是现代软件项目中标准化版本进化的基础。