
* format: fix markdown * update: fix markdown * update: fix cron problems * update: delete .markdownlintignore * update * chore: add tab -> 4 space * chore: fix tab -> 2 in the .editorconfig
150 lines
4.0 KiB
Markdown
150 lines
4.0 KiB
Markdown
Semver 备忘清单
|
|
===
|
|
|
|
这个 semver 语义化版本快速参考备忘清单。
|
|
|
|
语义化版本标准
|
|
----
|
|
|
|
### 介绍
|
|
|
|
[Semver](http://semver.org/) 是一种语义版本控制规范。
|
|
|
|
- [语义版本控制规范文档](http://semver.org/) _(semver.org)_
|
|
- [npm 的语义版本器](https://docs.npmjs.com/cli/v6/using-npm/semver) _(npmjs.com)_
|
|
|
|
### Semver
|
|
|
|
| - | - |
|
|
|-----------------|------------------------|
|
|
| `主版本号(MAJOR)` | 当你做了不兼容的 API 修改 |
|
|
| `次版本号(MINOR)` | 当你做了向下兼容的功能性新增 |
|
|
| `修订号(PATCH)` | 当你做了向下兼容的问题修正 |
|
|
|
|
### 简单范围
|
|
|
|
```
|
|
1.2.3
|
|
=1.2.3
|
|
>1.2.3
|
|
<1.2.3
|
|
>=1.2.3
|
|
```
|
|
|
|
请注意,后缀版本(`1.2.3-rc1`)不匹配。
|
|
|
|
### 范围
|
|
<!--rehype:wrap-class=row-span-3-->
|
|
|
|
| 范围 | 描述 | Notes |
|
|
| --- | --- | --- |
|
|
| `~1.2.3` | 是 `>=1.2.3 <1.3.0` | |
|
|
| `^1.2.3` | 是 `>=1.2.3 <2.0.0` | |
|
|
| `^0.2.3` | 是 `>=0.2.3 <0.3.0` | (0.x.x 是特殊的) |
|
|
| `^0.0.1` | 是 `=0.0.1` | (0.0.x 是特殊的) |
|
|
| `^1.2` | 是 `>=1.2.0 <2.0.0` | (像 ^1.2.0) |
|
|
| `~1.2` | 是 `>=1.2.0 <1.3.0` | (像 ~1.2.0) |
|
|
| `^1` | 是 `>=1.0.0 <2.0.0` | |
|
|
| `~1` | 相同的 | |
|
|
| `1.x` | 相同的 | |
|
|
| `1.*` | 相同的 | |
|
|
| `1` | 相同的 | |
|
|
| `*` | 任何版本 | |
|
|
| `x` | 相同的 | |
|
|
<!--rehype:className=shortcuts-->
|
|
|
|
### 连字符范围
|
|
|
|
| 范围 | 描述 |
|
|
| --- | --- |
|
|
| `1.2.3 - 2.3.4` | 是 `>=1.2.3 <=2.3.4` |
|
|
<!--rehype:className=shortcuts show-header-->
|
|
|
|
#### 部分向右
|
|
|
|
| 范围 | 描述 |
|
|
| --- | --- |
|
|
| `1.2.3 - 2.3` | 是 `>=1.2.3 <2.4.0` |
|
|
| `1.2.3 - 2` | 是 `>=1.2.3 <3.0.0` |
|
|
<!--rehype:className=shortcuts-->
|
|
|
|
#### 部分向左
|
|
|
|
| 范围 | 描述 |
|
|
| --- | --- |
|
|
| `1.2 - 2.3.0` | 是 `1.2.0 - 2.3.0` |
|
|
<!--rehype:className=shortcuts-->
|
|
|
|
当右侧为部分(例如,`2.3`)时,假定缺失的部分为`x`(例如,`2.3.x`)。
|
|
|
|
如果左边是部分的(例如,`1.2`),则假定缺少的部分为`0`(例如,`1.2.0`)。
|
|
|
|
### 有效的语义版本
|
|
<!--rehype:wrap-class=row-span-4-->
|
|
|
|
```js
|
|
0.0.4
|
|
1.2.3
|
|
10.20.30
|
|
1.1.2-prerelease+meta
|
|
1.1.2+meta
|
|
1.1.2+meta-valid
|
|
1.0.0-alpha
|
|
1.0.0-beta
|
|
1.0.0-alpha.beta
|
|
1.0.0-alpha.beta.1
|
|
1.0.0-alpha.1
|
|
1.0.0-alpha0.valid
|
|
1.0.0-alpha.0valid
|
|
1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay
|
|
1.0.0-rc.1+build.1
|
|
2.0.0-rc.1+build.123
|
|
1.2.3-beta
|
|
10.2.3-DEV-SNAPSHOT
|
|
1.2.3-SNAPSHOT-123
|
|
1.0.0
|
|
2.0.0
|
|
1.1.7
|
|
2.0.0+build.1848
|
|
2.0.1-alpha.1227
|
|
1.0.0-alpha+beta
|
|
1.2.3----RC-SNAPSHOT.12.9.1--.12+788
|
|
1.2.3----R-S.12.9.1--.12+meta
|
|
1.2.3----RC-SNAPSHOT.12.9.1--.12
|
|
1.0.0+0.build.1-rc.10000aaa-kk-0.1
|
|
99999999999999999999999.999999999999999999.99999999999999999
|
|
1.0.0-0A.is.legal
|
|
```
|
|
|
|
### 组合范围
|
|
|
|
| 范围 | 描述 |
|
|
| --- | --- |
|
|
| `>=0.14 <16` | 和 (空格分隔) |
|
|
| `0.14.x \|\| 15.x.x` | 或 (双竖线分隔) |
|
|
<!--rehype:className=shortcuts show-header-->
|
|
|
|
### 解释
|
|
<!--rehype:wrap-class=row-span-2-->
|
|
|
|
| 范围 | 描述 |
|
|
| --- | --- |
|
|
| `^` | 意思是“兼容” |
|
|
| `~` | 意思是“相当接近” |
|
|
| `0.x.x` | 用于“初始开发” |
|
|
| `1.x.x` | 表示定义了公共 API |
|
|
<!--rehype:className=shortcuts-->
|
|
|
|
### 预发布
|
|
|
|
```
|
|
1.2.3-prerelease+build
|
|
1.1.2-prerelease+meta
|
|
```
|
|
|
|
另见
|
|
----
|
|
|
|
- [语义化版本号验证正则表达式,支持按编号提取的语言](https://regex101.com/r/vkijKf/1/)
|
|
- [语义化版本号验证正则表达式,支持按组名称提取的语言](https://regex101.com/r/Ly7O1x/3/)
|