語意化版本 (Semantic Versioning)

Table of contents
在軟體世界中,版本控制是產品演進過程中不可或缺的一環,而語意化版本(Semantic Versioning,簡稱 SemVer) 是一套廣泛採用的版本規則,由 GitHub 共同創辦者 Tom Preston-Werner 提出,目的是解決版本號混亂、難以預測變更內容,以及相依套件升級容易出錯等問題。透過一致規則,SemVer 能清楚表達每次軟體更新對使用者的影響,降低升級風險,讓開發者與使用者都能更有信心地管理與採用新版本。
格式
語意化版本遵循 MAJOR.MINOR.PATCH
的結構,例如:3.4.1
每個數字代表不同層級的變更:
MAJOR (主版號): 不相容修改
MINOR (次版號): 向下相容的新功能
PATCH (修訂號): 向下相容的錯誤修正
也可在 MAJOR.MINOR.PATCH
後加入**預發佈版本(pre-release)或版本編譯資訊(build metadata)**作為延伸。
1.0.0
通常會被視為穩定版的開始範例
1.2.3
:正式版1.2.3-alpha
:預發佈版本,可能仍在測試階段1.2.3+123
:包含版本編譯資訊2.0.0
:不相容的重大更新0.5.0
:開發初期版本,不穩定
優先權(版本比對順序)
語意化版本遵循明確的比對規則來判斷版本的先後順序:
比較順序為:
MAJOR
→MINOR
→PATCH
,由左到右比較每個內容數字越大,版本越新
預發佈版本(如
-alpha
,-beta
)優先權低於正式版本同為預發佈時,依字典順序比較(例如:
alpha
<beta
)版本編譯資訊不在比較列表中
範例
1.0.0
>1.0.0-beta
>1.0.0-alpha
2.1.0
>2.0.5
Subscribe to my newsletter
Read articles from Tony directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
