语义化版本号

概述

Semmantic Versioning是由github起草的具有指导意义的,统一的版本号表示规则:

  • 软件的版本通常由三位组成,形如: X.Y.Z(主版本号/次版本号/修订号).

  • 版本是严格递增的,例如: 16.2.0 -> 16.3.0 -> 16.3.1;

  • 在发布重要版本时,可以发布alpha,beta,rc等现行版本;
  • alpha 和 rc 等修饰版本的关键字后面可以加上次数和meta信息.

版本格式

  • 主版本号(major):当你做了不兼容的 API 修改;
  • 次版本号(minor): 当你做了向下兼容的功能性新增,可以理解为 feature 版本;
  • 修订号(Patch):当你做了向下兼容的问题修正,可以理解为bug fix 版本.

先行版本

当要发布大版本或者核心的Feature时,但是又不能保证这个版本的功能 100% 正常。这个时候就需要通过发布先行版本。比较常见的先行版本包括:内测版、灰度版本了和RC版本。Semver规范中使用alpha、beta、rc(以前叫做gama)来修饰即将要发布的版本。它们的含义是:

  • alpha:内部版本;
  • beta:公测版本:
  • rc:即release candiate,正式版本的候选版本

比如:1.0.0-alpha.0, 1.0.0-alpha.1, 1.0.0-beta.0, 1.0.0-rc.0, 1.0.p-rc.1 等版本。alpha, beta, rc后需要带上次数信息。

版本发布准则

  • 标准的版本号必须按照XYZ的格式,并且XYZ为飞负的整数,禁止在数字前方补0,版本发布号要严格递增;
  • 某个软件版本发布后,任何修改都必须以新版本发行;
  • 1.0.0用于界定公共API,当你的软件发布到了正式环境,或者有稳定的API时,就可以发布1.0.0版本了;
  • 版本的有限层级指的是不同版本在排序时如何比较.判断优先级时,必须把版本依照顺序拆分为主板本号,次版本号,修订号和先行版本号后进行比较.

NPM 包依赖

当执行:

npm install package -s

来安装第三方包时,npm首先会安装包的最新版本,然后把包的名称以及版本号写在package.json文件中.

指定可用的版本号范围

仅更新修复版本

  • 最简写法: 1.0
  • 使用通配符的写法: 1.0.x
  • 使用模糊符的写法: ~1.0.4(大于等于1.0.4 且小于1.1.0)

跟进每个小版本更新

  • 最简写法: 1
  • 使用通配符: 1.x 1.x.x
  • 使用模糊符: ^1.0.4(大于等于1.0.4且小于2.0.0)

始终升级到最新版

  • 最简写法: *
  • 使用通配符的写法: *
  • 使用模糊符的写法: *(大于等于0.0.0)

NPM 包依赖

通常我们发布一个包到npm仓库时,我们的做法是先修改 package.json 为某个版本,然后执行 npm publish 命令。手动修改版本号的做法建立在你对Semver规范特别熟悉的基础之上,否则可能会造成版本混乱。npm 考虑到了这点,它提供了相关的命令来让我们更好的遵从Semver规范:

  • 升级补丁版本号: npm version patch
  • 升级小版本号: npm version minor
  • 升级大版本号: npm version major

当执行npm publish 时,会首先将当前版本发布到npm registry,然后更新dist-tags.latest的值为新版本.

当执行 npm publish –tag=next 时,会首先将当前版本发布到 npm registry,并且更新 dist-tags.next 的值为新版本。这里的 next 可以是任意有意义的命名(比如:v1.x、v2.x 等等)

thank u !