reference/docs/semver.md
fw_qaq 5701da6e5b
chore: format markdown code. (#42)
* 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
2022-11-11 01:51:54 +08:00

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/)