Files
.github
.husky
docs
ansible.md
apt.md
awk.md
bash.md
c.md
cargo.md
chmod.md
cmake.md
cmd.md
cocoapods.md
colors-named.md
conan.md
cpp.md
cron.md
cs.md
css.md
curl.md
dart.md
djiango.md
docker.md
dockerfile.md
electron.md
emacs.md
emmet.md
emoji.md
es6.md
expressjs.md
ffmpeg.md
find.md
git.md
github-actions.md
gmail.md
golang.md
graphql.md
grep.md
homebrew.md
html-char.md
html.md
htop.md
http-status-code.md
ini.md
iso-639-1.md
java.md
javascript.md
jest.md
jq.md
json.md
julia.md
koajs.md
kotlin.md
latex.md
lerna.md
lessjs.md
lsof.md
lua.md
markdown.md
matlab.md
mime.md
mysql.md
netcat.md
netstat.md
nginx.md
npm.md
package.json.md
php.md
postgres.md
python.md
pytorch.md
quickreference.md
react.md
regex.md
resolutions.md
ruby.md
rust.md
sass.md
screen.md
sed.md
semver.md
sketch.md
ssh.md
styled-components.md
stylus.md
sublime-text.md
swift.md
swiftui.md
sysdig.md
systemd.md
tar.md
tmux.md
toml.md
typescript.md
vim.md
vscode.md
vue.md
vue2.md
webstorm.md
xcode.md
xpath.md
yaml.md
yarn.md
yum.md
scripts
.dockerignore
.editorconfig
.gitattributes
.gitignore
.lintstagedrc
.markdownlint.json
.prettierignore
.prettierrc
CONTRIBUTING.md
Dockerfile
LICENSE
README.md
package.json
renovate.json
reference/docs/semver.md
fw_qaq 5701da6e5b chore: format markdown code. ()
* 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/)