Are you an LLM? You can read better optimized documentation at /vite-press/frontend/npm/SemVer.md for this page in Markdown format
NPM 包版本号规范
SemVer:Semantic Versioning Specification, 语义化版本命名规范
SemVer 是什么
SemVer 通常有两层含义:
语义化版本号标准:
Github起草的版本号规范,定义了一套语义化版本号应遵循的标准和规则。Node的实现:Node中对语义化版本号的具体实现。npm包版本号就遵循了SemVer标准。
SemVer 标准
标准版本号
标准版本号为三个部分组成,中间使用点 . 分隔。如当前 npm 的版本号为:1.3.2。三个部分含义为:
| 含义 | 描述 | 示例 | |
|---|---|---|---|
| Major | 主版本号 | 通常为重构或做了向下不兼容的API修改 | 1 |
| Minor | 次版本号 | 增加新功能,兼容之前的版本 | 3 |
| Patch | 修订号 | 向下兼容的问题修订 | 2 |
先行版本号
在标准版本号后面通过短中划线 - 加上 alpha、beta、rc 等词语,这种版本称为先行版本
最终发布版本(release)之前的版本,都可以理解为先行版本。
- alpha:内测版本。可能
bug较多,需要继续修改 - beta:公测版本。相对
alpha有很大的改进,没有严重错误,但是还存在着一些缺陷,需要经过多次测试来进一步消除 - rc:即
Release candidate,以前称为gama,正式版本的候选版本。比较稳定,不会再加入新的功能
如果有多个先行版本,可以在后面加上 . 和 数字,如:1.0.0-alpha.1、1.0.0-alpha.2、1.1.1-rc.6 等。
package 版本号
项目中使用到的依赖的版本号和当前项目的版本号
依赖的版本号
在依赖的包的版本号前面有一些符号,如:^、~、* 等。
^:最左侧第一个非0的数字不变(Major非0,可理解为Major固定),次版本号Minor和修订号Patch不小于该版本号~:主版本号Major和次版本号Minor固定,修订号Patch不小于该版本号*:始终最新版本x.x.x:x能够代替Major、Minor、Patch中的任何一个位置。表示对应的位置可以更新
版本号升级
- 升级主版本号
Major
shell
pnpm version major
# 1.0.0 -> 2.0.01
2
3
2
3
- 升级次版本号
Minor
shell
pnpm version minor
# 1.0.0 -> 1.1.01
2
3
2
3
- 升级修订号
Patch
shell
pnpm version patch
# 1.0.0 -> 1.0.11
2
3
2
3
版本号工具
shell
pnpm add semver
#比较版本号
console.log(semver.lt('1.0.0', '1.1.0'))
console.log(semver.eq('1.0.0', '1.1.0'))
console.log(semver.gt('1.0.0', '1.1.0'))
#提取版本号
console.log(semver.major('1.2.3'))
console.log(semver.minor('1.2.3'))
console.log(semver.patch('1.2.3'))
#验证版本号
console.log(semver.clean('v1.0.0'))
console.log(semver.valid('v1.0.0'))
console.log(semver.valid('v1.0.a'))1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16