Package.json裡^、~的版本控制符號意義
語意化版本號
在說明之前,先科普一下版本號各自代表的意義
一般來說,大部份軟體版本號分3段,如A.B.C
A: 大版本號,通常在整體重寫、或跟前一版差距較大且有可能不相容時,則A+1。通常0代表開發階段。
B: 功能更新。當有增加新功能時,B+1。
C: 小修改。如修復BUG。只要有小修正就C+1。
雖然不是一定,但大部份慣性來說就是如此
Package.json的版本控制符號~
、^
npmjs官方文件就已經有針對版本號有詳細的說明了
~version: Approximately equivalent to version
^version: Compatible with version
雖然英文單字都看得懂,但看完還是看不出來有啥差別XD
~
跟^
最大差別就是鎖定的版本號位置不得高於該版本號碼
^
:鎖住第一碼(即A) 不得變更。如^1.2.2
,則安裝範圍是>=1.2.2
且 <2.0.0
。即須符合1.*.*
。~
:鎖住第二碼(即B) 不得變更。如~1.2.2
,則安裝範圍是>=1.2.2
且<1.3.0
。即須符合1.2.*
。
參考資料
stack overflow / What’s the difference between tilde(~) and caret(^) in package.json?
npmjs官方文件