【其它】语义版本定义 以及 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
- 【其它】语义版本定义 以及 npm 的 semver
- semver(语义化的版本控制)
- 语义化版本(SemVer)的范围
- 语义化版本控制规范(SemVer)
- 软件版本名称的定义 语义化版本
- Angular - 语义化版本控制规范(SEMVER)- 没有 Angular 3 ,Angular 4 计划2017年3月发布
- windows 下npm Cannot find module 'semver'
- npm Cannot find module 'semver' --解决方案
- semver
- node开发:windows环境下npm Cannot find module 'semver'
- node开发:windows环境下npm Cannot find module 'semver'
- ubuntu下面自由切换java版本的命令以及其它常用功能
- 困扰我一周左右的semver
- NodeJS、NPM安装配置步骤(windows版本) 以及环境变量
- NodeJS、NPM安装配置步骤(windows版本) 以及环境变量
- npm 安装 Express4.0版本的问题
- npm的版本升级 (windows)
- npm 如何下载指定版本的组件
- HDU 1561 The more, The Better(多重背包+树形DP)
- 解读equals方法与hashCode方法渊源
- eclipse的Servers视图中无法添加Tomcat7的解决方法
- MySQL---数据库从入门走向大神系列(十七)-JavaWeb分页技术实例演示2
- 树
- 【其它】语义版本定义 以及 npm 的 semver
- Linux命令说明
- Failure executing javac, but could not parse the error
- unity5.2播放视频在移动端(Android,ios)
- java 递归得到某一文件夹下所有的文件 统计文件个数
- jdk动态代理(转载)
- java编程思想--容器
- Javascript模块化编程(三):require.js的用法
- 处理大数字BigInteger与BigDecimal