NPM Support SemVer2

起頭是因為先看到了Isaac所發佈的npm更新訊息

因為不知道文中提到的SemVer2到底是什麼,所以就索性去翻弄一下,原來是個有趣的東西

全名是Semantic Versioning,最近的版本就是2.0.0,取名也很直接,應該也大概猜到這是做什麼 用的了吧 - 套件版號的命名規則。這是Tom Preston-Werner所提出的規格(說不定名字大家不熟,不過說他是github的創辦人應該就不少人知道了吧,然後最近發現原來Gravatar也是他的作品,真是太威了!!),我猜應該是github上面的需要吧,給個讓大家有依循的準則 ;p

雖然取版號是非常平常的一件事,不過老實講我也不知道到底明確的命名是什麼,所以看到這東西還真是讓我驚訝了一下,篇幅 不長,應該花個幾分鐘就可以看完了,這邊稍微摘要一下:

  • X.Y.Z (主要/次要/補丁),這是主要的格式,皆為非負整數,數字前不帶零(ex: 01.03.05都是不合法的),任何更動都要 進版。
  • 0.y.x 是開發階段,API處於不穩定的狀態(隨時都可能變動)。
  • x.y.Z - API相容的除錯/更新
  • x.Y.z - 增加新的(但相容)的API
  • X.y.z - 不向下相容的更新
  • pre-release的命名方式 - 連字號+[0-9A-Za-z-](ex: 1.0.2-beta, 2.1.3-0.0.1)
  • Build metadata則是 - 加號+[0-9A-Za-z-](ex: 1.0.1+001, 2.1.3-0.0.1+20130606)。
  • 版號的大小,依照主要、次要、補丁、pre-release的順序依次作比較,有pre-release的優先權小於沒有的。(ex:1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0)

大概是這樣,這樣往後套件變動的時候,依循這個規範就可以很清楚知道該怎麼改版號了。NPM在1.3.0之後已經支援最新2.0.0版本的規範,對於你所開發的套件版號,必須要依循SemVer2的規定,不過相依套件則不需要,可以看一下Isaac給的範例,稍微注意一下吧 ;p

Ferrari Lee

Read more posts by this author.

Subscribe to Ferrari != Ferrari

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!