ScarShow

< IS >

套件版號與字元符號的意義

早在五、六年前因為各種套件工具的釋出,用來輔助開發專案的套件也越來越多。

對於套件開發者而言,要讓每次改版所附加的版號更有意義也是很頭大的,而對於使用套件的人來說更新套件,更新到太新的套件版本不小心讓專案爆炸也是很頭大的。

所以有些東西就這樣誕生了。

版號的意義

SemVer

對於撰寫套件的人這個規範就很重要了,它規範了版號擁有三層數字以及後缀詞的用法,格式如下:

major.minor.patch-metadata

major 作為套件的主版號,各版號間的功能並不相容。

minor 次版號,當有功能被實作時並且相容於前一版。

patch 修訂號,通常用於錯誤修正。

metadata 後缀詞,通常用來敘述版本,可不使用。

符號的意義

對於使用套件的人來說,這個就很重要了,前面說到的各種套件管理工具釋出的年代,其中最有名的工具就是 NPM 了,在那個 node.js 很紅,紅到就算是不穩定也還是硬拿來寫我碩士論文的年代。

通常我們會看到這樣的版本敘述:

^1.24.5
~2.4

這樣的符號常用的有以下幾種 *^~

* (widecard) 表示所以版本都吃,所以後面不用加上任何版號。 ^ (caret) 表示固定住主版號 major ,只更新有向下相容的新功能最新版本。 ~ (tilde) 表示固定住主版號 major 及次版號 minor,只更新錯誤修正個新版本。

然後還有像是 >< 這類數學符號的用法,如果所使用套件的依賴關聯性很嚴格可能會用到,用來限制版本範圍。

最後

雖然上面有明確的規範了,但照著規範走還是有機會爆炸的,人出來走跳總是要還...像是最近更新修訂號就炸的 React 16.6.2 XD