Semantic Version

相依性

相依性是指在版本升級的時候,跟前一個版本的相關程度,如果套件的版本相依性過高,在升級的時候就會變得困難。但如果相依性過低,又會造成版本的混亂,就像這個本版相不相容以前的版本…..也就是因為這樣,所以才需要定義一個版本編號的系統來管理版本之間的相依性。

語意化版本 Semantic Versioning

語意化版本 Semantic Versioning 可以寫成 SemVer,看版本的數字編號就能知道之間的相依性,簡單來說就是使用一致的版本規則來描述相依性:

MAJOR.MINOR.PATCH

  • MAJOR: 無法向下相容
  • MINOR: 可以向下相容,增加新功能
  • PATCH: 可以向下相容,修正一些小錯誤時

任何一個版本發佈之後就不能再做修改了。

正式版本

在 0.x.x 還在開始開發的階段,任何功能隨時都有可能會改變,所以有可能任何版本都不相容。在 1.0.0 之後才會被視為穩定的版本。

Pre-release

  • alpha 內部測試的版本
  • beta 最早對外測試的版本
  • rc (Release Candidate) 正式版發布前的候選版本,通常會有好幾個選擇作為正式版
1
2
3
4
5
6
1.0.0-alpha.1
1.0.0-alpha.2
1.0.0-beta.1
1.0.0-beta.2
1.0.0-rc.1
1.0.0-rc.2

Ranges

  • 1.2.3 固定版本
  • >= 1.2.3 最小版本
  • >= 1.2.3, < 2.0 版本範圍
  • ~> 1.2.3 這樣的寫法等同於 >= 1.2.3, < 1.3.0 一樣。

~> 這個符號叫做 Twiddle wakka 或是 Pessimistic Operator

最小版本 最大版本
1.2.3 1.2.3 1.2.3
>= 1.2.3 >= 1.2.3
~> 1.2.3 >= 1.2.3 < 1.3.0
~> 1.2 >= 1.2 < 2.0