npm包版本号详解
npm包在发布时,需要按照包版本语义化中的约定去更新设置,例如我们常见的1.0.0
,1.0.1
,0.0.1
等这样的版本号,那么这些数字分别代表什么意思呢?下面我们将详细介绍。
npm版本号的组成
一个完整的版本号,由三部分组成:主版本号(major)、次版本号(minor)、修订版本号(patch),简称X.Y.Z
,具体含义:
- 主版本号(major):项目(包)做了大量的变更,与旧的版本存在一定的不兼容性等问题。
- 次版本号(minor):做了少量的变更或向下做了兼容。
- 修订版本号(patch):修复上一个版本的bug或向下做兼容。
版本号变更的一般规则:
- 版本号只升不降,不得在数字前面加0。例如不能是
1.01.0
,应该是1.0.0
。 - 当主版本号升级时,次版本号和修订版本号需要归零。例如
1.1.1
->2.0.0
。 - 当次版本号升级时,主版本号不变,修订版本号归零。例如
1.1.1
->1.2.0
。 - 当修订版本号升级时,主版本和次版本号都不变。例如
1.1.1
->1.1.2
。 - 一般第一个正式版本应为
1.0.0
。 - 处于开发测试阶段的版本一般为
0.y.z
,如果不发布,则默认为0.0.0
,如果发布第一个测试版本则是0.1.0
,如果修复第一个测试版本则是0.1.1
,如果更新第二个测试版本则是0.2.0
。
版本标识符(标签)
格式:Major.Minor.Patch-Identifier.1
,其中Identifier
就是代表标识符,和版本号之间使用-
隔离,后面则是当前标识符的版本版本号,每升级一次则+1
标识符 | 含义 | 说明 |
---|---|---|
demo | demo版本 | 用于验证问题的版本 |
dev | 开发版 | 多用于开发阶段,bug较多,功能不完善 |
alpha | α版本 | 内部版本,测试用,代表当前可能有很大的变动 |
beta | 测试版本(β版本) | 测试版本,代表版本已开始稳定,但是还有bug |
stable | 稳定版本 | |
latest | 最新版本 | 安装时不知道版本号时的默认安装最新版本 |
希望安装带标签的版本,必须明确指定标签或者版本号,否则安装的是最新的不带标签的版本。
版本运算符
版本运算符一般是指定一定范围的版本号,主要有~
、-
、^
、<
、>
等。
~
版本号只指定主版本号或者次版本号,例如:
版本范围 | 匹配版本号 |
---|---|
~2 | 2.Y 或者 2.0.0 ≤ V < 4.0.0 |
~2.1 | 2.1.Z 或者 2.1.0 ≤ V < 2.2.0 |
~2.1.1 | 2.1.1 ≤ V < 2.2.0 |
^
版本号
匹配第一个非0版本号
版本范围 | 匹配版本号 |
---|---|
^2.1.2 | 2.1.2 ≤ V < 3.0.0 |
^0.1.2 | 0.1.2 ≤ V < 0.2.0 |
^2.Y.Z | 2.0.0 ≤ V < 3.0.0 |
npm 安装包时,默认使用 ^ 匹配版本。
~
与 ^
对比
版本范围 | 匹配版本号 | 说明 |
---|---|---|
~2.1.0 | 2.1.0 ≤ V < 2.2.0 | 主版本号和次版本号相同 |
^2.1.0 | 2.1.0 ≤ V < 3.0.0 | 主版本号相同 |