Skip to content

Latest commit

 

History

History
68 lines (45 loc) · 2.88 KB

version.md

File metadata and controls

68 lines (45 loc) · 2.88 KB

版本号介绍

这里将详细的介绍语义化版本号的相关内容

版本号的基本规则

结构

版本号一般有三个部分,以.隔开,就像 X.Y.Z,其中

  • X:主版本号,不兼容的大改动
  • Y:次版本号,功能性的改动
  • Z:修订版本号,问题修复

每个部分为整数 (>=0),按照递增的规则改变。

在修订版本号的后面可以加上其他信息,用-连接,比如:

  • X.Y.Z-Alpha: 内测版
  • X.Y.Z-Beta: 公测版
  • X.Y.Z-Stable: 稳定版

范围规则

package.json 文件中,我们所安装的依赖,都会有版本号的描述,比如使用初始化的一个 react 工程,在它的 package.json 里自动安装的依赖

"devDependencies": {
  "react": "^15.6.1",
  "react-dom": "^15.6.1"
}

其实我们平时看到的版本号,不止有 ^ 前缀的,还有~、x、* 和 -,那么他们代表的含义是什么呢?

^ 前缀的含义

^: 允许在不修改[X, Y, Z]中 最左非零数字 的更改。举例说明:

X.Y.Z 结构的版本号中,X、Y、Z 都是非负的整数,上面定义的意思就是说从左向右,遇到第一个非零数字是不可修改的,下一个数字可以更改,比如:

  • X、Y、Z 都不为0,^15.6.1,最左的非零数字是 15,所以 X 是不允许更新的,也就是说主版本号不会超过 15,表示的就是版本号 >=15.6.1 && <16.0.0
  • 如果 X0,那么第一个非零数字就是 Y,就只能对 Z 做出修改,^0.1.2 表示版本号 >=0.1.2 && < 0.2.0
  • 如果 X、Y 的数字都是 0 的话,第一个非零数字就是 Z,表示的就是版本号不允许更新;^0.0.2,主版本号和次版本号都是 0,修订号为非零,表示的就是版本号 >=0.0.2 && < 0.0.3

~ 前缀的含义

~: 匹配大于 X.Y.Z 的更新 Z 的版本号

也就是说只会更新 Z 的版本号。同样举例说明:

  • X、Y、Z都不为 0~1.2.3 表示版本号 >=1.2.3 && < 1.3.0
  • X 为 0~0.2.3 表示版本号 >=0.2.3 && < 0.3.0,这种情况下,~ 等价于 ^
  • X、Y 为 0~0.0.3 表示版本号 >=0.0.3 && < 0.1.0

x 的含义(x 为小写)

x: 可以替代X、Y、Z中任意一个,表示该位置可更新

  • 1.2.x 标识只有 Z 的位置可以更新,表示版本号 >=1.2.0 && < 1.3.0
  • 1.x: 表示 Y 和 Z 的位置可以更新,表示版本号 >=1.0.0 && < 2.0.0
  • *: 任意版本都可以

上面的 x 可以用 * 代替,其实,用 x* 的地方可以省略不写,比如 1.2.x1.2 表示的意思是一样的。

- 的含义

-:包含第一个版本号和第二个版本号的范围 表示的是一个闭区间,-连接的两个版本号范围都包括

举例说明:

  • 0.1.0-2: 表示版本号:>=0.1.0 && < 3.0.0
  • 0.1.0-2.1.1: 表示版本号:>=0.1.0 && <= 2.1.1`