Skip to content

了解语义化版本 SemVer(Semantic Versioning)吗?

参考答案:

Semantic Versioning(语义化版本控制)是一种版本控制规范,旨在帮助开发者清晰地表达软件版本之间的变化,并确保版本更新对用户的影响可预见和可管理。SemVer 的核心在于使用三段式版本号:MAJOR.MINOR.PATCH

版本号结构

  1. MAJOR(主版本号)

    • 变更:当你做了不兼容的 API 修改时。
    • 示例2.0.03.0.0
  2. MINOR(次版本号)

    • 变更:当你在不破坏向后兼容的情况下添加功能时。
    • 示例1.1.01.2.0
  3. PATCH(修订号)

    • 变更:当你做了向后兼容的问题修复时。
    • 示例1.0.11.0.2

版本号附加信息

  • 预发布版本:用 - 后缀来标识预发布阶段版本,比如 1.0.0-alpha.1
  • 构建元数据:用 + 后缀来附加构建信息,比如 1.0.0+20130313144700

遵循 SemVer 的好处

  • 清晰的变化记录:通过主版本号、次版本号和修订号,开发者可以迅速了解软件的变化程度。
  • 向后兼容性:明确声明了变更的兼容性,用户可以根据版本号来判断更新的影响。
  • 可靠的版本管理:通过预发布和构建元数据,提供了更多版本管理的灵活性和信息。

版本更新

在升级版本时,常常使用一些符号来指定允许升级的范围,其中包括 ^ 和 ~ 等。

  • ^ 表示向后兼容地升级版本号,只允许升级到次版本号或修订版本号,不允许升级到主版本号。
  • ~ 表示只允许升级到修订版本号,不允许升级到次版本号或主版本号。

例如,对于版本号为 1.2.3:

  • ^1.2.3 允许升级到 1.2.4、1.3.0 等修订号或次版号的版本,但不允许升级到 2.0.0。
  • ~1.2.3 只允许升级到 1.2.4、1.2.5 等修订版本号的版本,但不允许升级到 1.3.0、2.0.0 等更高的版本。

题目要点:

Semantic Versioning 提供了一种标准化的方式来表示版本号的变化,使得版本管理更加透明和可靠,有助于开发者和用户之间更好地沟通和管理版本更新。