package.json中版本号详解

一、版本号简介

软件版本号有四部分组成:

  • 第一部分为主版本号,变化了表示有了一个不兼容上个版本的大更改
  • 第二部分为次版本号,变化了表示增加了新功能,并且可以向后兼容
  • 第三部分为修订版本号,变化了表示有bug修复,并且可以向后兼容
  • 第四部分为日期版本号加希腊字母版本号,希腊字母版本号共有五种,分别为base、alpha、beta 、RC 、 release

eg:在这里插入图片描述

关于希腊版本号:
  • Base
    此版本表示该软件仅仅是一个假页面链接,通常包括所有的功能和页面布局,但是 页面中的功能都没有做完整的实现,只是做为整体网站的一个基础架构。

  • Alpha
    软件的初级版本,表示该软件在此阶段以实现软件功能为主,通常只在软件开发者 内部交流,一般而言,该版本软件的Bug较多,需要继续修改,是测试版本。测试 人员提交Bug经开发人员修改确认之后,发布到测试网址让测试人员测试,此时可 将软件版本标注为alpha版。

  • Beta
    该版本相对于Alpha 版已经有了很大的进步,消除了严重错误,但还需要经过多次 测试来进一步消除,此版本主要的修改对象是软件的UI。修改的的Bug 经测试人 员测试确认后可发布到外网上,此时可将软件版本标注为 beta版。

  • RC
    该版本已经相当成熟,基本上不存在导致错误的Bug,与即将发行的正式版本相差无几。

  • Release
    该版本意味“最终版本”,在前面版本的一系列测试版之后,终归会有一个正式的版本,是最终交付用户使用的一个版本。该版本有时也称标准版。

二、 package.json中的依赖

dependencies字段指定了项目运行所依赖的模块,devDependencies指定项目开发所需要的模块(测试阶段和过渡阶段的依赖应该加在DevDependencies中)。它们都指向一个对象。该对象的各个成员,分别由模块名和对应的版本要求组成,表示依赖的模块及其版本范围。
eg:

{ 
  "name": "ethopia-waza",
  "description": "a delightfully fruity coffee varietal",
  "version": "1.2.3",
  "devDependencies": {
     "coffee-script": "~1.6.3"
  },
   "dependencies": {
     "bar": "file:../foo/bar"
  }
}

模块名和版本号被假定组合成一个唯一的标识符。

version字段必须能够被node-semver解析。node-semver作为依赖项被捆绑进了npm中。

其实,版本号的写法并不是只有我们熟知的 波浪号( ~3.8.0 )插入号( ^3.8.0 )3.8.0,只要是能够被node-semver解析的写法都是可以的。
主要有以下几种:

示例:
  • version 必须确切匹配这个version
  • >version 必须大于这个version
  • >=version 必须大于等于这个version
  • < version 必须小于这个version
  • <=version 必须小于等于这个version
  • ~version 大约相当于version
  • ^version 与version兼容
  • 1.2.x 可以是1.2.0、1.2.1等,但不能是1.3.0
  • http://… URL作为依赖项
  • * 匹配任何版本
  • “”(空字符串) 匹配任何版本,和*一样
  • version1 - version2 相当于 >=version1 <=version2
  • range1 || range2 range1或range2其中一个满足时采用该version
  • git… Git URL作为依赖项
  • user/repo GitHub URLs
  • tag 一个以tag发布的指定版本,参考npm-tag
  • path/path/path 本地Paths
{
    "dependencies": {
        "foo": "1.0.0 - 2.9999.9999",   
        "bar": ">=1.0.2 <2.1.2",        必须大于等于1.0.2版本且小于2.1.2版本
        "baz": ">1.0.2 <=2.3.4",        必须大于1.0.2版本且小于等于2.3.4版本
        "boo": "2.3.1",                 必须匹配这个版本
        "boo": "~2.3.1",                约等于2.3.1,只更新最小版本,相当于2.3.X,即>=2.3.1 <2.4.0
        "thr": "2.3.x",
        "boo": "^2.3.1",2.3.1版本兼容,相当于2.X.X,>=2.3.1 < 3.0.0,不改变大版本号。
        "qux": "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0",
        "asd": "http://asdf.com/asdf.tar.gz",   在版本上指定一个压缩包的url,当执行npm install 时这个压缩包会被下载并安装到本地。
        "til": "~1.2",   
        "elf": "~1.2.3", 
        "two": "2.x",
        "lat": "latest",             安装最新版本
        "dyl": "file:../dyl",         使用本地路径
        "adf": "git://github.com/user/project.git#commit-ish"    使用git URL加commit-ish
    }
}
三、版本范围详解
  • 连字符范围:X.Y.Z-A.B.C
    • 指明版本范围
      1.2.3 - 2.3.4: >=1.2.3 <=2.3.4
    • 起始版本不全: 缺少的部分补0
      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
  • 带有X的版本范围:“1.2.X ”、“1.X” 、“1.2.*”
    任何带有X、x 和 *的版本号都是有谁存在就要匹配谁。
    • *:>=0.0.0
    • “”: >=0.0.0
    • 1.x: >=1.0.0 <2.0.0
    • 1.2.x: >=1.2.0 <1.3.0
    • 1: >=1.0.0 <2.0.0
    • 1.2: >=1.2.0 <1.3.0
  • 波浪号范围 ~1.2.3 ~1.2 ~1
    • ~1.2.3: >=1.2.3 <1.3.0, 只能更新
    • ~1.2: >=1.2.0 <1.3.0(相当于~1.2.0,1.2.x
    • ~1:>=1.0.0 <2.0.0 (相当于1.X,所有的1.X.X
    • ~1.2.3-beta.2: >=1.2.3-beta.2 <1.3.0

参考文章:

  1. npm-semver——The semantic versioner for npm
  2. 软件的版本号组成及其意义
  • 18
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值