package.json中 版本号详解

news2024/11/16 9:31:07

1. 版本号简介

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

  • 第一部分:主版本号,当进行不兼容的 API 更改时,则升级主版本;
  • 第二部分:次版本号,当以向后兼容的方式添加功能时,则升级次版本;
  • 第三部分:补丁版本号,当进行向后兼容的缺陷修复时,则升级补丁版本;
  • 第四部分:日期版本号 + 希腊字母版本号(base、alpha、beta 、RC 、 release);

关于希腊版本号:
Base
此版本表示该软件仅是一个假页面链接,通常包括所有的功能和页面布局,但是页面中的功能都没有做完整的实现,只是做为整体网站的一个基础架构;
Alpha
软件的初级版本,表示该软件在此阶段以实现软件功能为主,通常只在软件开发者内部交流。一般而言,该版本软件的 Bug 多,需要继续修改,是测试版本。测试 人员提交 Bug 经开发人员修改确认之后,发布到测试网址让测试人员测试,此时可将软件版本标注为 alpha 版;
Beta
该版本相对于 Alpha 版已经有了很大的进步,消除了严重错误,但还需要经过多次 测试来进一步消除,此版本主要的修改对象是软件的UI。修改的的 Bug 经测试人员测试确认后可发布到外网上,此时可将软件版本标注为 beta 版;
RC
该版本已经相当成熟,基本上不存在导致错误的Bug,与即将发行的正式版本相差无几;
Release
该版本意味“最终版本”,在前面版本的一系列测试版之后,终归会有一个正式的版本,是最终交付用户使用的一个版本。该版本有时也称标准版。
在这里插入图片描述

2. package.json 中的依赖

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

{ 
  "name": "ethopia-waza",
  "version": "1.2.3",
  "dependencies": {
    "vue": "^2.6.11",
    "axios": "^0.19.2",
    "bar": "file:../foo/bar",
  },
  "devDependencies": {
    "@vue/cli-plugin-vuex": "~4.4.0",
    "@vue/cli-plugin-router": "~4.4.0",
    "coffee-script": "~1.6.3",
  },
}

version 字段必须能够被 node-semver 解析。node-semver 作为依赖项被捆绑进了 npm 中。
其实,版本号的写法并不是只有我们熟知的波浪号 ( ~3.8.0 )、插入号 ( ^3.8.0 ) 和 3.8.0,只要是能够被 node-semver 解析的写法都是可以的。

符号含义
=接受确切的版本
>接受高于指定版本的任何版本
>=接受等于或高于指定版本的任何版本
<接受低于指定版本的任何版本
<=接受等于或低于指定版本的任何版本
~若写入的是 ~0.13.0,会更新到补丁版本:即 0.13.1,但不会更新到 0.14.0
^若写入的是 ^2.3.1,相当于2.X.X, 即 >=2.3.1 < 3.0.0,不改变大版本号
-接受一定范围的版本(1.2.0 - 1.6.0)
latest使用可用的最新版本
1.2.x可是1.2.0、1.2.1等,但不能是1.3.0
*匹配任何版本
’ '(空字符串)匹配任何版本,和 * 一样
http://…URL作为依赖项
git…Git URL作为依赖项
user/repoGitHub URLs
tag以 tag 发布的指定版本,参考 npm-tag
path/path/path本地Paths
||  组合版本( < 2.1 || > 2.6
{
  "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
  }
}

3. 版本范围

连字符范围: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>=1.0.0 <2.0.0 
~1.2.3-beta.2: >=1.2.3-beta.2 <1.3.0

4. 案列

"devDependencies": {
 "antd": "^3.1.4",
 "babel-plugin-import": "~1.1.0",
 "classnames": "2.2.5",
 "qs": "^6.3.0",
 "robe-ajax": "^1.0.1",
 "expect": "^1.20.2",
 "js-cookie": "^2.1.3",
}
  • 普通版本号:安装此版本,如 “classnames”: “2.2.5”,表示安装 2.2.5 的版本;
  • ~:安装大版本的最小最新子版本,如 “babel-plugin-import”: “~1.1.0”,表示安装 1.1.x 的最新版本(不低于1.1.0),但不安装1.2.x(安装时不改变大版本号和次要版本号);
  • ^:安装大版本的最高中版本,如 “antd”: “^3.1.4”,表示安装 3.1.4 及以上的版本,但不安装 4.0.0,(安装时不改变大版本号);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/389747.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FPGA实现SDI视频编解码 SDI接收发送,提供2套工程源码和技术支持

目录1、前言2、设计思路和框架SDI接收SDI缓存写方式处理SDI缓存读方式处理SDI缓存的目的SDI发送3、工程1详解4、工程2详解5、上板调试验证并演示6、福利&#xff1a;工程代码的获取1、前言 FPGA实现SDI视频编解码目前有两种方案&#xff1a; 一是使用专用编解码芯片&#xff0…

【玩转c++】vector讲解和模拟底层实现

本期主题&#xff1a;vector的讲解和模拟实现博客主页&#xff1a;小峰同学分享小编的在Linux中学习到的知识和遇到的问题小编的能力有限&#xff0c;出现错误希望大家不吝赐vector的介绍及使用1.1vector的介绍vector其实就是一个数组的模板 &#xff0c;存放的数据可以改变而已…

不想长大,却又期待成长

长大后的世界、 会让我觉得很陌生、很陌生、 为什么我们都要长大、 为什么要学会独立&#xff1f;甚至还恨害怕长大。. 因为没有依靠、没有安全感、 虽然我知道、总有一天我要步入这个大人的世界、 可是不想、害怕、害怕自己会受伤、 世界的变化、太快了、太快了、 成人的世…

PMP项目管理项目运行环境

目录1 概述2 事业环境因素和组织过程资产3 组织系统3.1 概述3.2 组织治理框架3.2.1 治理框架3.2.2 项目治理3.3 管理要素3.4 组织结构类型3.4.1 组织结构类型3.4.2 项目管理办公室1 概述 项目所处的环境可能对项目的开展产生有利或不利的影响&#xff0c;这些影响的两大主要来…

数据结构——链表讲解(2)

作者&#xff1a;几冬雪来 时间&#xff1a;2023年3月5日 内容&#xff1a;数据结构链表讲解 目录 前言&#xff1a; 剩余的链表应用&#xff1a; 1.查找&#xff1a; 2.改写数据&#xff1a; 3.在pos之前插入数据&#xff1a; 4.pos位置删除&#xff1a; 5.在pos的后…

零死角玩转stm32初级篇1-STM32如何编译和下载程序

本篇博文目录:一.程序的编译二.程序的下载1.ISP方式2.JTAG方式3.SWD方式4.SWIM方式一.程序的编译 Keil uVision5 工具中有四个编译如图&#xff0c;他们分别表示什么意思,下面进行介绍,解释来源于<<零死角玩转stm32>>。 第一个按钮&#xff1a; Translate 就是翻译…

【项目实战】Linux下安装Nginx教程

一、环境准备 Linux版本&#xff1a;CentOS7 64位 二、具体步骤 2.1 步骤1&#xff1a;确认系统中安装以下基础依赖 确认系统中安装了gcc、pcre-devel、zlib-devel、openssl-devel。 在安装Nginx前首先要确认系统中安装了gcc、pcre-devel、zlib-devel、openssl-devel。 yu…

Feature interation—— Bridge、Fusion、Filte

Feature interation&#xff08;特征交互&#xff09;&#xff1a;物品不同模态的表示属于不同的语义空间&#xff0c;并且每个用户对模态也有不同的偏好。因此&#xff0c;多模态推荐系统&#xff08;MRS&#xff09;寻求融合和交互多模态特征来生成用户和物品的特征表示。特征…

STM32开发(六)STM32F103 通信 —— RS485 Modbus通信编程详解

文章目录一、基础知识点二、开发环境三、STM32CubeMX相关配置1、STM32CubeMX基本配置2、STM32CubeMX RS485 相关配置四、Vscode代码讲解五、结果演示以及报文解析一、基础知识点 了解 RS485 Modbus协议技术 。本实验是基于STM32F103开发 实现 通过RS-485实现modbus协议。 准备…

DJ1-1 计算机网络和因特网

目录 一、计算机网络 二、Interent 1. Internet 的介绍 2. Internet 的具体构成 3. Internet 提供的服务 4. Internet 的通信控制 一、计算机网络 定义&#xff1a;是指两台以上具有独立操作系统的计算机通过某些介质连接成的相互共享软硬件资源的集合体。 计算机网络向…

Python机器学习17——极限学习机(ELM)

本系列基本不讲数学原理&#xff0c;只从代码角度去让读者们利用最简洁的Python代码实现机器学习方法。 背景&#xff1a; 极限学习机(ELM)也是学术界常用的一种机器学习算法&#xff0c;严格来说它应该属于神经网络&#xff0c;应该属于深度学习栏目&#xff0c;但是我这里把它…

C/C++开发,无可避免的多线程(篇四).线程与函数的奇妙碰撞

一、函数、函数指针及函数对象 1.1 函数 函数&#xff08;function&#xff09;是把一个语句序列&#xff08;函数体, function body&#xff09;关联到一个名字和零或更多个函数形参&#xff08;function parameter&#xff09;的列表的 C 实体&#xff0c;可以通过返回或者抛…

MongoDB分片教程

一、概述分片是一种将数据分布在多个 机器。MongoDB使用分片来支持具有非常大数据的部署 集和高吞吐量操作。具有大型数据集或高吞吐量应用程序的数据库系统可以 挑战单个服务器的容量。例如&#xff0c;高查询率可以 耗尽服务器的 CPU 容量。工作集大小大于 系统的 RAM 会给磁…

初学者的第一个Linux驱动

软件环境&#xff1a;Ubuntu20.04 Linux内核源码&#xff1a;3.4.39 硬件环境&#xff1a;GEC6818 什么是驱动&#xff1f;简单来说就是让硬件工作起来的程序代码。 Linux驱动模块加载有两种方式&#xff1a; 1、把写好的驱动代码直接编译进内核。 2、把写好的驱动代码编…

Linux24 -- tcp相关概念、多个客户端链接服务端代码

一、tcp相关概念 tcp协议特点&#xff1a;面向连接的、可靠的、流式服务 建立链接&#xff1a;三次握手&#xff0c;发送 SYN 断开链接&#xff1b;四次挥手&#xff0c;发送 FIN tcp、udp都同属于传输层&#xff0c;在网络层使用ip协议&#xff0c;都要将数据交给IP协议&am…

零拷贝技术-内核源码剖析

在网络编程中&#xff0c;如果我们想要提供文件传输的功能&#xff0c;最简单的方法就是用read将数据从磁盘上的文件中读取出来&#xff0c;再将其用write写入到socket中&#xff0c;通过网络协议发送给客户端。ssize_t read(int fd, void *buf, size_t count); ssize_t write(…

学习记录---latent code 潜在编码

文章目录参考文献1. 什么是潜在编码&#xff1f;2.什么是潜在空间&#xff1f;3.同类潜在编码的相似性4.潜在编码的应用4.1 Antoencoders4.2 Generative models5.结论个人学习总结&#xff0c;持续更新中……参考文献 [1] 快速理解深度学习中的latent code潜在编码 1. 什么是…

[一篇读懂]C语言十一讲:单链表的删除和单链表真题实战

[一篇读懂]C语言十一讲&#xff1a;单链表的删除和单链表真题实战1. 与408关联解析及本节内容介绍1 本节内容介绍2. 单链表的删除操作实战3. 单链表真题解读与解题设计1 题目解读2 解题设计第一阶段&#xff1a;双指针找中间结点第二阶段&#xff1a;原地逆置第三阶段&#xff…

ubuntu16.04 python代码自启动和可执行文件自启动

1 python代码自启动 参考 https://blog.csdn.net/qq_38288618/article/details/104096606 准备好python文件 test.py import time c1 while 1:time.sleep(1)cc1print(c)运行 sudo chmod 777 test.py python3 test.py准备run.sh 文件 #!/bin/bash gnome-terminal -x bash -…

【Spring6】IoC容器之基于XML管理Bean

3、容器&#xff1a;IoC IoC 是 Inversion of Control 的简写&#xff0c;译为“控制反转”&#xff0c;它不是一门技术&#xff0c;而是一种设计思想&#xff0c;是一个重要的面向对象编程法则&#xff0c;能够指导我们如何设计出松耦合、更优良的程序。 Spring 通过 IoC 容…