Development Standards - Semantic Versioning

Guide

定義

語意化版本號由以下三部分構成:

  • 主版本號 (Major):當發生不向後相容的變更時增加。
  • 次版本號 (Minor):當增加向下相容的新功能時增加。
  • 修訂號 (Patch):當修復向下相容的問題時增加。

例如:1.2.3 中,1 是主版本號,2 是次版本號,3 是修訂號。

預發布版本

預發布版本用於標示還不夠穩定的版本,通常是開發、測試中的版本,例如 alphabeta 階段。這些標記常用於給開發者或測試者試用,在正式發布之前捕捉可能的問題。

語法上,預發布版本會附加在主版本號、次版本號、修訂號之後,以連字號 (-) 分隔,常見的標記包括:

  • alpha:表示非常早期、初步的版本,可能還不完整。
  • beta:表示功能已基本完成,正在進行測試和改進的版本。
  • rc (Release Candidate):表示接近正式發布的候選版本,可能只需要進行少量修改。

例如:

  • 1.2.3-alpha:表示這是版本 1.2.3 的一個 alpha 預發布版本。
  • 1.2.3-beta.1:表示這是版本 1.2.3 的第一個 beta 預發布版本。
  • 1.2.3-rc.2:表示這是版本 1.2.3 的第二個候選版本。

版本範圍 (以 npm 為例)

  1. 波浪符號 (~)
    允許更新修訂號,但不更新次版本號。
    例如,~1.2.3 表示可以更新到 <1.3.0,允許的版本包括 1.2.41.2.5 等。

  2. 插入符號 (^)
    允許更新次版本號和修訂號,但不更改主版本號(0 版本除外)。
    例如,^1.2.3 表示可以更新到 <2.0.0,允許的版本包括 1.3.01.4.5 等。

  3. 比較符號 (<, <=, >, >=)
    用於指定版本的上限或下限。
    例如,<2.0.0 表示可以使用比 2.0.0 更早的所有版本。

  4. 星號 (*)
    匹配任意版本。
    例如,1.2.* 表示匹配所有 1.2.x 的版本,如 1.2.11.2.9 等。

  5. 範圍符號 (-)
    指定一個範圍的版本。
    例如,1.2.3 - 2.3.4 表示所有從 1.2.32.3.4 的版本。

  6. 或運算符 (||)
    允許多個版本範圍。
    例如,1.2.3 || 2.0.0 表示可以使用 1.2.32.0.0