【其它】语义版本定义 以及 npm 的 semver

来源:互联网 发布:网络红歌2017火爆歌曲 编辑:程序博客网 时间:2024/05/21 20:27

语义版本定义

完整学习什么是语义化版本定义 中文地址

初步了解 版本定义规则

版本格式:主版本号.次版本号.修订号,版本号递增规则如下:

  • 主版本号:当你做了不兼容的 API 修改,
  • 次版本号:当你做了向下兼容的功能性新增,
  • 修订号 :当你做了向下兼容的问题修正。

使用规定

必须(MUST) :

  • 各版本号要求非负数,如 1.0.0
  • 版本必须是逐步递增 1.0.0 -> 1.0.1 -> 1.1.0 (-> 1.0.2 规则上不允许)
  • 原版本 1.0.0 发行后 , 修改部分bug后再发行要求进行版本递增
  • 修订号 Z(x.y.Z | x > 0)必须在只做了向下兼容的修正时才递增。这里的修正指的是针对不正确结果而进行的内部修改
  • 次版本号 Y(x.Y.z | x > 0)必须在有向下兼容的新功能出现时递增。在任何公共 API 的功能被标记为弃用时也递增
  • 每当次版本号递增时,修订号必须归零
  • 主版本号 X(X.y.z | X > 0)必须在有任何不兼容的修改被加入公共 API 时递增。每当主版本号递增时,次版本号和修订号必须归零
  • 先行版本号的标识符必须由ascii码 [0-9A-Za-z-] 组成
  • 版本的优先层级指的是不同版本在排序时如何比较。判断优先层级时,必须把版本依序拆分为主版本号、次版本号、修订号及先行版本号后进行比较(版本编译信息不在这份比较的列表中)。由左到右依序比较每个标识符号,第一个差异值用来决定优先层级:主版本号、次版本号及修订号以数值比较,例如:1.0.0 < 2.0.0 < 2.1.0 < 2.1.1。

禁止(MUST NOT):

  • 不允许在版本前面补0, 如 1.01.0
  • 软件版本标记好后,不允许再未改版本号进行修改然后发行

应该(SHOULD)

  • 1.0.0 的版本号用于界定公共 API 的形成。这一版本之后所有的版本号更新都基于公共 API 及其修改内容

不应该(SHOULD NOT)

  • 主版本为0的时候, 一切都可能随时被改变。这样的公共 API 不应该被视为稳定版。

可以 (MAY)

  • 主版本号的变更除了API的变更外,内部还可以包括次版本号及修订级别的改变。
  • 先行版本号可以被标注在修订版之后,先加上一个连接号再加上一连串以句点分隔的标识符号来修饰。范例:1.0.0-alpha、1.0.0-alpha.1、1.0.0-0.3.7、1.0.0-x.7.z.92
  • 版本编译信息可以被标注在修订版或先行版本号之后,先加上一个加号再加上一连串以句点分隔的标识符号来修饰。范例:1.0.0-alpha+001、1.0.0+20130313144700、1.0.0-beta+exp.sha.5114f85。

semver

The semantic versioner for npm

npm的语义版本定义

npm中 package.json 的 dependencies 的用法

{  "dependencies": {    "body-parser": "^1.12.4",    "cookie-parser": "^1.3.5",    "debug": "^2.1.3",    "express": "^4.12.4",    "jade": "^1.9.2",    "morgan": "^1.5.3",    "q": "^1.4.1",    "serve-favicon": "^2.2.0"  }}

^version
- ^1.2.3 大于等于 1.2.3版本 小于 2.0.0 版本
- ^0.1.0 大于等于 0.1.0版本 小于 0.2.0 版本
- ^0.0.1 大于等于 0.0.1版本 小于 0.0.2 版本
- ^1.2.3-beta.2 大于等于 1.2.3-beta.2 小于2.0.0版本 ,同时也匹配 1.2.3-beta.3等预发行版本但不匹配前三个版本不同的其他发行版本,如1.2.4-beta.3
- ^1.2.x 大于等于 1.2.0 小于 2.0.0
- ^0.0.x 大于等于 0.0.0 小于 0.1.0
- ^0.0 大于等于 0.0.0 小于 0.1.0
- ^1.x 大于等于 1.0.0 小于2.0.0
- ^0.x 大于等于 0.0.0 小于1.0.0

主发行版本大于1,则可以匹配到最新此版本
主版本为0,次版本不为0 ,则可以匹配到最新修订版
主版本,此版本为0,则可以匹配到最新预发行版

~version
- ~1.2.3 大于等于 1.2.3 小于 1.3.0
- ~1.2 大于等于 1.2.0 小于 1.3.0
- ~1 大于等于1.0.0 小于 2.0.0
- ~0.2.3 大于等于0.2.3 小于 0.3.0
- ~0.2 大于等于0.2.0 小于 0.3.0
- ~0 大于等于0.0.0 小于 1.0.0

与^的区别在于版本号的完整度。
如果只有主版本号,则获取当前主版本号+1的版本
如果只有主版本号和次版本号,则获取次版本号+1的版本, 主版本号不变
如果版本号齐全,则获取修订版+1的版本

version - version
版本号区间包括两端的版本,一般以获取最新的版本为要求
- 0.1.0 - 1.1.0
- 0 - 2

* version 特殊符号*

  • 1.x 大于等于 1.0.0 小于 2.0.0
  • 1.2.x 大于等于 1.2.0 小于 1.3.0
  • * 大于等于 0.0.0
0 0
原创粉丝点击