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官方文件