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 | 通配符,允许任何版本 |