1. 語義化版本(SemVer)
語義化版本的格式是 MAJOR.MINOR.PATCH,其中:
- MAJOR:主版本號,表示不兼容的 API 修改。
- MINOR:次版本號,表示新增功能但保持向后兼容。
- PATCH:修訂號,表示修復錯誤但保持向后兼容。
2. 常見的版本范圍符號
^(caret 符號)
-
表示允許安裝最新的次版本(MINOR)或修訂版本(PATCH),但不包括主版本(MAJOR)的更新
-
適用于大多數情況下,確保兼容性。
-
示例
"dependencies": {"lodash": "^4.17.21" }
允許安裝 4.x.x 版本,但不包括 5.x.x。
~(波浪號符號)
-
表示允許安裝最新的修訂版本(PATCH),但不包括次版本(MINOR)或主版本(MAJOR)的更新。
-
更嚴格,適用于對次版本更新比較敏感的場景
-
示例
"dependencies": {"express": "~4.17.1" }
允許安裝 4.17.x 版本,但不包括 4.18.x 或更高版本。
*(星號符號)
-
表示允許安裝任何版本。
-
示例
"dependencies": {"chalk": "*" }
允許安裝 chalk 的任何版本(不推薦,可能會引入不兼容的更新)。
> 和 <(大于或小于符號)
-
用于指定版本范圍。
-
示例
"dependencies": {"debug": ">2.6.9 <3.0.0" }
允許安裝 2.6.9 到 3.0.0 之間的版本。
>= 和 <=(大于等于或小于等于符號)
-
用于指定版本范圍。
-
示例
"dependencies": {"morgan": ">=1.10.0" }
允許安裝 1.10.0 或更高版本。
||(垂直線符號)
-
用于指定多個版本范圍。
-
示例
"dependencies": {"some-package": "1.0.0 || >=2.0.0 <3.0.0" }
允許安裝 1.0.0 或 2.x.x 版本。
-(連字符符號)
-
用于指定一個版本范圍。
-
示例
"dependencies": {"another-package": "1.0.0 - 2.0.0" }
允 許安裝 1.0.0 到 2.0.0 之間的版本。
x 或 X(字母符號)
-
表示通配符,允許安裝任何版本。
-
示例
"dependencies": {"test-package": "1.x.x" }
允許安裝 1.x.x 版本(如 1.0.0、1.1.0 等)。
版本范圍的組合
可以組合使用這些符號來指定復雜的版本范圍。例如:
"dependencies": {"example-package": ">=1.2.3 <2.0.0 || >=3.0.0"
}
- 允許安裝 1.2.3 到 2.0.0 之間的版本,或者 3.0.0 及更高版本。
總結
符號 | 含義 |
---|---|
^ | 允許最新的次版本或修訂版本,但不包括主版本更新。 |
~ | 允許最新的修訂版本,但不包括次版本或主版本更新。 |
* | 允許任何版本 |
> 或 < | 指定大于或小于某個版本 |
>= 或 <= | 指定大于等于或小于等于某個版本 |
- 或 X | 指定一個版本范圍。 |
x 或 X | 通配符,允許任何版本 |