nodejs的package.json依赖dependencies中 ^ 和 ~ 的区别

nodejs的package.json定义了一个模块,包括其依赖关系的一个简单的JSON文件,该文件可以包含多个不同的指令来告诉Node包管理器如何处理模块。 dependencies则表示此模块依赖的模块和版本,其中常常可以看到类似 ^1.2.0 或 ~1.2.0 这样的版本范围指示。

首先,一个完整的版本号组表示为: [主要版本号,次要版本号,补丁版本号]

1. 用 ~ 指示范围

版本号中如果指定了主要版本、次要版本,则只允许补丁版本升级;

如果只指定了主要版本,则允许次要版本、补丁版本升级。

~1.2.3   指定了主要、次要版本,所以最高可升级到1.2.9

~1  指定了主要版本,则做高可升级到1.9.9

~1.2.3-beta.2 >=1.2.3-beta.2 < 1.3.0

(注:1.2.3版允许高于beta.2的beta版,但1.2.4-beta.2不被允许,因为是属于另一个版本号组的beta版本。)

2. 用 ^ 指定范围

允许不会改变最左边的不为零的版本号的版本提升,也就是说,^1.0.0允许次要、补丁版本升级,^0.1.0允许补丁版本升级,^0.0.x 不允许升级。

^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.3-beta.2 >=1.2.3-beta.2 < 2.0.0

允许1.2.3 版的高于beta-2 的beta版本。

^0.0.3-beta.2 >=0.0.3-beta.2 < 0.0.4

只允许0.0.3 版的高于beta-2 的版本

当解析带有^的版本范围时,补丁版本号缺少会补 0,但是会灵活的处理,即主要、次要版本号都为 0 也可以。

^1.2.x >= 1.2.0 < 2.0.0

^1.x >= 1.0.0 < 2.0.0

^0.0.x >= 0.0.0 < 0.1.0

^0.0 >= 0.0.0 < 0.1.0

^0.x >= 0.0.0 < 1.0.0

参考链接:http://blog.csdn.net/kaosini/article/details/50353375

时间: 2024-11-05 12:25:19

nodejs的package.json依赖dependencies中 ^ 和 ~ 的区别的相关文章

node.js之看懂package.json依赖库版本控制

金天:学习一个新东西,就要持有拥抱的心态,如果固守在自己先前的概念体系,就会有举步维艰的感觉.node.js依赖库的版本控制金天微信:15998603918 欢迎找我聊聊天. 一般node.js项目会依赖大量第三方module, 那么如何控制module的版本呢? 答案通过package.json. "dependencies": { //精确匹配 "async": "1.2.1", //近似 相当于0.7.* "pdfkit"

nodejs的package.json

package.json文件会描述这个NPM包的所有相关信息,包括作者.简介.包依赖.构建等信息,格式是严格的JSON格式 在E:/nodejs/mychat下 执行,npm init 输入yes,就完成了package.json包的建立 { "name": "chat", "version": "1.0.0", "description": "chat", "main&quo

Nodejs之package.json介绍说明

规范的package.json及package.json中各属性的作用. "name":包名. "description":包简介. "author":包作者. "version":版本号. "repository":源码托管地址. "maintainers":包维护者列表,一般由name,email,web三个属性组成. "contributors":贡献者列表.

全然符合package.json在CommonJS中的规范

众所周知,package.json是CommonJS规定的用来描写叙述包的文件,全然符合规范的package.json文件应该含有一下字段. name:包的名称,必须是唯一的.由小写英文字母.数字和下划线组成.不能包括空格. description:包的简要说明. version:符合语义化八本识别规范的版本号字符串. keywords:关键字数组.通经常使用于搜索. maintainers:维护者数组,每一个元素要包括name.email(可选).web(可选)字段. contributors

完全符合package.json在CommonJS中的规范

众所周知,package.json是CommonJS规定的用来描述包的文件,完全符合规范的package.json文件应该含有一下字段. name:包的名称,必须是唯一的,由小写英文字母.数字和下划线组成,不能包含空格. description:包的简要说明. version:符合语义化八本识别规范的版本字符串. keywords:关键字数组,通常用于搜索. maintainers:维护者数组,每个元素要包含name.email(可选).web(可选)字段. contributors:贡献者数组

package.json中devDependencies与dependencies的区别

前言:之前一直不懂既然都是项目的依赖,为什么要分成两个部分,devDependencies和dependencies,有什么区别? 安装方式 我们在通过npm安装插件或库时,有三种方式: npm install:将插件安装到项目,但不写package.json(不推荐,这样最终需要手动添加) npm install --save:将插件安装进项目,并写入package.json的dependencies中 npm install --save-dev:将插件安装进项目,并写入package.js

伙计,给我来一杯package.json!不加糖

前言:夜深了,我熬了一锅热气腾腾的package.json,给大家端上来,希望大家喜欢 json和JS对象的区别 package.json,顾名思义,它是一个json文件,而不能写入JS对象. 所以我们首先要搞懂的是JSON和JS对象的区别: (图源:找到的都是被爬虫爬的文章,实在找不到原作者..) [注意] 在JSON中属性名一定要加上双引号 name字段 name字段的限制 1.name字段必须小于214字符(这个没什么好记的-) 2.name字段不能包含有“.”符号和下划线(这个要记一下哦

项目开发之package.json

Name 必须字段. 提示: 不要在name中包含js, node字样: 这个名字不能以点号或下划线开头: 这个名字不能包含有大写字母: 这个名字可能在require()方法中被调用,所以应该尽可能短: name字段不能含有非URL安全的字符,因为它将当发布的时候,它将作为你的包的相关信息被写入URL中 那么,有哪些算是非URL安全的字符呢? Version 必须字段. 对于"version":"x.y.z" 1.修复bug,小改动,增加z 2.增加了新特性,但仍能

npm install、npm init、npm update、npm uninstall和package.json

npm install 安装本地包 npm install <package_name>:这个命令将在当前目录中创建node_modules目录(如果尚不存在),并将该软件包下载到该目录.该命令默认本地安装. 安装了哪个版本的软件包? 如果本地目录中没有package.json文件,则会安装最新版本的软件包. 如果有package.json文件,则安装满足该package(如果有的话)在package.json中声明的semver规则的最新版本. 安装全局包 npm install -g &l