語意化版本控制是一種常用於版本編號的慣例。
在 Node.js 的封包中,有一個很好的事情就是大家都同意使用語意化版本控制。
語意化版本控制的概念很簡單:所有版本都有三個數字:x.y.z
。
- 第一位數字是主要版本
- 第二位數字是次要版本
- 第三位數字是修補版本
當你進行新版本發布時,你不能隨意將數字遞增,而是需要遵守一些規則:
- 如果你進行了不兼容的 API 更改,則將主要版本遞增
- 如果你以向後相容的方式新增功能,則將次要版本遞增
- 如果你進行了向後相容的錯誤修復,則將修補版本遞增
這種慣例在各種程式語言中都被採用,並且對每個 npm
封包都很重要,因為整個系統都取決於此。
為什麼如此重要呢?
因為 npm
在我們運行 npm update
時,可以在 package.json
檔案 中使用一些規則來選擇要更新的版本。
這些規則使用以下符號:
^
~
>
>=
<
<=
=
-
||
讓我們逐一了解這些規則:
^
:如果你在運行npm update
時輸入^0.13.0
,它可以更新到修補版本和次要版本:0.13.1
、0.14.0
,以此類推。~
:如果你在運行npm update
時輸入~0.13.0
,它只能更新到修補版本:0.13.1
是可以的,但0.14.0
不行。>
:接受高於指定版本的任何版本>=
:接受等於或高於指定版本的任何版本<=
:接受等於或低於指定版本的任何版本<
:接受低於指定版本的任何版本=
:接受精確的版本-
:接受一個版本範圍。例如:2.1.0 - 2.6.2
||
:組合多個版本集合。例如:< 2.1 || > 2.6
您可以將某些符號組合在一起,例如使用 1.0.0 || >=1.1.0 <1.2.0
,以使用 1.0.0 或從 1.1.0 開始的版本,但小於 1.2.0。
還有其他一些規則:
- 沒有符號:只接受指定的特定版本(
1.2.1
) latest
:希望使用最新可用的版本