早在五、六年前因為各種套件工具的釋出,用來輔助開發專案的套件也越來越多。
對於套件開發者而言,要讓每次改版所附加的版號更有意義也是很頭大的,而對於使用套件的人來說更新套件,更新到太新的套件版本不小心讓專案爆炸也是很頭大的。
所以有些東西就這樣誕生了。
版號的意義
對於撰寫套件的人這個規範就很重要了,它規範了版號擁有三層數字以及後缀詞的用法,格式如下:
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