Calvert's murmur

看懂 npm 語意化版本

2014-08-20

約 1412 字 / 需 7 分鐘閱讀

npm(Node Package Manager) 採用語意化版本 2.0.0 規範,詳細的規範內容可查看 http://semver.org/

使用 npm 管理套件時,你會注意到 package.json 內的套件版本有許多表示法,以下說明各表示法所代表的意思:

版本 說明
1.2.3 指定版本。需為完整的版號,包含主版號次版號修訂號
需注意的是,版本編譯資訊(Metadata)會被忽略,所以 1.2.3+build2012 滿足此條件。
>1.2.3 大於指定版本。
<1.2.3 小於指定版本。如果沒有預先發佈版在此版本範圍,則沒有預先發佈版會被允許,即使在技術上是「小於」。
>=1.2.3 大於或等於。需注意的是,預先發佈版不等同其版本。
因此 1.2.3-beta 不滿足此條件,但 2.3.0-beta 則會。
<=1.2.3 小於或等於。在這種情況下,允許預先發佈版,所以 1.2.3-beta 滿足此條件。
1.2.3 - 2.3.4 等同於 >=1.2.3 <=2.3.4
~1.2.3 等同於 >=1.2.3-0 <1.3.0-0,當使用 ~ 符號時,支援預先發佈版,但不含次版號的變更(及其預先發佈版)。
因此 1.3.0-beta 不滿足 ~1.2.3
^1.2.3 等同於 >=1.2.3-0 <2.0.0-0,當使用 ^ 符號時,支援任何次版號及修訂號的變更(含預先發佈版),但不含主版號的變更(及其預先發佈版)。
因此 1.5.1 能滿足 ^1.2.3,而 1.2.22.0.0-beta 則不會。
^0.1.3 等同於 0.1.3,與 0.1.3 版相容。0.x.x 版比較特殊,因為語意化版本規範規定 0.x.x 版不作任何穩定性保證,只有指定的版本被認為是有效的。
~0.0.2 等同於 0.0.2,與 0.0.2 版相容。
~1.2 等同於 >=1.2.0-0 <1.3.0-0,任何從 1.2 開始的版本。
^1.2 等同於 >=1.2.0-0 <1.3.0-0,任何相容於從 1.2 開始的版本。
1.2.x 等同於 >=1.2.0-0 <1.3.0-0,任何從 1.2 開始的版本。
1.2.* 等同於 1.2.x
1.2 等同於 1.2.x
~1 等同於 >=1.0.0-0 <2.0.0-0,任何從 1 開始的版本。
^1 等同於 >=1.0.0-0 <2.0.0-0,任何相容於從 1 開始的版本。
1.x 等同於 >=1.0.0-0 <2.0.0-0,任何從 1 開始的版本。
1.* 等同於 1.x
1 等同於 1.x
* 任何版本。
x 等同於 *
"" 空字串,等同於 *

官方文件:The semantic versioner for npm