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.2 及 2.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 |
等同於 * 。 |
"" |
空字串,等同於 * 。 |