参考资料:

在package的devDependencies和dependencies2个字段中有指定依赖包版本,这个版本返回一个由一个或多个空格分隔的字符串,这些版本是有一定的语义的,当然依赖还可以用tarball或者git URL。下面我们来学习下这些版本代表的语义。

语义化版本控制的规范是由Gravatars创办者兼GitHub共同创办者Tom Preston-Werner所建立。

版本号的意义

主版号.次版号.修订号( x.y.z )

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

指定版本

0.1.2 //指定依赖版本为0.1.2

范围依赖

在指定范围内选择稳定版本进行安装

< Less than
<= Less than or equal to
> Greater than
>= Greater than or equal to console.info(semver.satisfies('1.2.3', '<1.2.0')); //false
console.info(semver.satisfies('1.2.3', '<1.3.0')); //true
console.info(semver.satisfies('1.2.3', '<1.2')); //false
console.info(semver.satisfies('1.2.3', '<1.3')); //true console.info(semver.satisfies('1.2.3', '>1.2')); //false
console.info(semver.satisfies('1.2.3', '>1.2.0')); //true console.info(semver.satisfies('1.2.3', '>1.2 || <1.2')); //true
console.info(semver.satisfies('1.2.0', '>1.2 || <1.2')); //true

高级范围选择

1.2.3 - 2.3.4  //>=1.2.3 <=2.3.4
1.2 - 2.3.4 // >=1.2.0 <=2.3.4
1.2.3 - 2.3 //>=1.2.3 <2.4.0
1.2.3 - 2 // >=1.2.3 <3.0.0
* // >=0.0.0
1.x // >=1.0.0 <2.0.0
1.2.x // >=1.2.0 <1.3.0
"" (empty string) // >=0.0.0
1 // 1.x.x >=1.0.0 <2.0.0
1.2 // 1.2.x >=1.2.0 <1.3.0

波浪范围选择

介于当前版本和副版本+1之间的版本,如不存在副版本,则介于当前版本和主版本+1版本

~1.2.3 // >=1.2.3 <1.3.0
~1.2 // >=1.2.0 <1.3.0 (Same as 1.2.x)
~1 // >=1.0.0 <2.0.0 (Same as 1.x)
~0.2.3 // >=0.2.3 <0.3.0
~0.2 // = >=0.2.0 <0.3.0 (Same as 0.2.x)
~0 // >=0.0.0 <1.0.0 (Same as 0.x)

插入号范围选择

在指定了副版本情况下或主版本不为0情况下,介于当前版本和主版本+1之间的版本,其他情况介于当前版本和副版本+1之间

^1.2.3 // >=1.2.3 <2.0.0
^0.2.3 // >=0.2.3 <0.3.0
^0.0.3 // >=0.0.3 <0.0.4
^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

语义化npm版本号的更多相关文章

  1. Semver(语义化版本号)扫盲

    最近Github 10周年在朋友圈里沸沸扬扬刷屏,小编在工作中却惊讶的发现不少同事对版本号中的beta和rc没有概念,使用 npm install package@next 时,也不清楚next代表的 ...

  2. npm学习(八)之如何使用语义化版本

    npm的语义化版本控制——Semantic versioning 在新发布的代码中传达更改的程度非常重要,因为有时更新会破坏包需要的代码(称为依赖项).语义化版本控制(semver)是一个旨在解决这个 ...

  3. semantic versioning语义化版本号

    语义化版本号 是由github创始人 Tom Preston-Werner 发起的一个关于软件版本号的命名规范,关于这个规范详细的说明可以在 官网 查看,也可访问其 GitHub项目页面 ,官网文档: ...

  4. semver语义化版本号

    semver语义化版本号 语义化版本号各位置的含义 版本号:X.Y.Z X: 代表发生了不兼容的API改变 Y: 代表向后兼容的功能性变化 Z: 代表向后兼容bug fixes 语义化版本号示例 1. ...

  5. 版本号严格遵守semver语义化标准

    地址:http://semver.org/lang/zh-CN/?spm=a219a.7629140.0.0.GUJMXE 语义化版本 2.0.0 摘要 版本格式:主版本号.次版本号.修订号,版本号递 ...

  6. HTML语义化:HTML5的新标签及IE5.5~9的部分兼容方案

    一.前言 本文将介绍HTML5中新增的语义化标签,及在IE5.5~9(IE9已经开始支持部分HTML5新标签了)支持这些新标签的兼容性处理. 目录一坨: 二.语义化标签:article.aside.t ...

  7. 语义化版本控制规范(SemVer)

    摘自: http://semver.org/lang/zh-CN/ 简介 在软件管理的领域里存在着被称作"依赖地狱"的死亡之谷,系统规模越大,加入的套件越多,你就越有可能在未来的某 ...

  8. 语义化版本控制规范(SemVer)

    参考链接 https://semver.org/lang/zh-CN/ 语义化版本 2.0.0 (透过版本号的改变来传达信息.) 摘要 版本格式: 主版本号.次版本号.修订号 版本号递增规则如下: 1 ...

  9. 关于HTML语义化的一些理解

    语义化这个词我想大家都看到了无数次,特别是在一些招聘广告上. 其实我自己也是,不过每次看到都觉得是那些招聘公司复制的,其实他们根本说不清语义化是什么,而且也根本不看重. 所以我一直也没把这东西当回事过 ...

随机推荐

  1. linux:date命令(转)

    在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的工作带来诸多方便. 1.命令格式: date [参数 ...

  2. HBase中Region, store, storefile和列簇的关系

    转自:http://zhb-mccoy.iteye.com/blog/1543492 The HRegionServer opens the region and creates a correspo ...

  3. NSTimer使用不当引发的内存泄漏问题

    NSTimer可以用来执行一些定时任务,比较常用的方法就是: + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTar ...

  4. vue proxyTable

    Vue-cli proxyTable 解决开发环境的跨域问题 字数474 阅读1685 评论1 喜欢3 和后端联调时总是会面对恼人的跨域问题,最近基于Vue开发项目时也遇到了这个问题,两边各自想了一堆 ...

  5. windows下如何快速优雅的使用python的科学计算库?

    Python是一种强大的编程语言,其提供了很多用于科学计算的模块,常见的包括numpy.scipy.pandas和matplotlib.要利用Python进行科学计算,就需要一一安装所需的模块,而这些 ...

  6. linux memcached php 整合

    http://blog.csdn.net/liruxing1715/article/details/8269563

  7. Android setTag()与getTag(),与set多个setTag()

    首先我们要知道setTag方法是干什么的,SDK解释为 Tags Unlike IDs, tags are not used to identify views. Tags are essential ...

  8. ios math.h 常用数学函数

    1. 三角函数  double sin (double);正弦  double cos (double);余弦  double tan (double);正切  2 .反三角函数  double as ...

  9. python使用模板手记

    1.首先是$符号 在webpy中,模板html里面可以写python代码,但要用$开始.但如果网页代码本来就有$符号(javascript或者正则表达式),我们需要对其进行转意.用$$代替$ 给jqu ...

  10. Android中怎样控制LogCat的自己定义输出

    在Android开发中,LogCat是一个非常重要的调试工具,能够输出非常多关于项目或者手机的信息. 可是正是因为LogCat功能的过于强大,输出的信息量也是极为庞大的,那么我们就须要通过一定的方式依 ...