建置與工具

語意化版本(semantic versioning · semver)

語意化版本(semantic versioning,簡稱 semver)是一套大家公認的版本號寫法,把版本號寫成三段——主版本.次版本.修訂號,比如 2.4.1——每一段都對「改了什麼」做出明確承諾。它的妙處在於:光看這個號碼,你就能判斷一次更新是可以放心拿來,還是很可能把你弄崩。

從左往右讀。修訂號(PATCH)加一(2.4.1 → 2.4.2)表示一個向後相容的 bug 修復:安全。次版本(MINOR)加一(2.4.1 → 2.5.0)是加了新功能,但沒破壞舊的:依然安全。主版本(MAJOR)加一(2.4.1 → 3.0.0)則是最響亮的那聲警告——它在喊「我刪掉或改動了某些東西,你的程式碼可能得跟著改」。

你清單檔案裡那些小符號,說的也正是這件事。插入符號「^1.2.3」意思是「更新的 1.x 都行,但絕不跳到 2.0」——除了主版本升級,它什麼都信。波浪號「~1.2.3」更嚴格:「只要 1.2 裡更新的修訂號就好」。靠它們,你能自動收下那些安全的修復,同時繞開那些會咬人的改動。

  2.4.1
  │ │ └─ PATCH — backward-compatible bug fix (safe)
  │ └─── MINOR — new features, nothing broken (safe)
  └───── MAJOR — breaking change (read the notes!)

^1.2.3  → any 1.x, never 2.0
~1.2.3  → only newer patches of 1.2

三個數字,三種承諾——符號則決定你願意接受多新的版本。

0.x.y 是「蠻荒地帶」:1.0 之前規則比較鬆,連次版本升級都可能搞壞東西。那個階段要小心些。

又稱
semverversion numbermajor.minor.patchcarettilde