npm生成的package.json文件中依赖项版本号前的波浪号(~)和插入符号(^)是啥意思?

package.json一般也就长这么模样:

{
  "name": "",
  "description": "",
  "version": "4.17.1",
  "author": "",
  "contributors": [],
  "license": "MIT",
  "repository": "",
  "homepage": "",
  "keywords": [],
  "dependencies": {
    "accepts": "~1.3.7",
    "array-flatten": "1.1.1",
    "body-parser": "^1.19.0",
    "content-disposition": "0.5.3",
    "content-type": "~1.0.4",
    "cookie": "^0.4.0",
    "cookie-signature": "1.0.6",
    "debug": "2.6.9",
    "depd": "~1.1.2",
    "encodeurl": "~1.0.2"
  },
  "devDependencies": {},
  "engines": {
    "node": ">= 0.10.0"
  },
  "files": [],
  "scripts": {
    "lint": "eslint .",
    "test": "mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/",
    "test-ci": "...",
    "test-cov": "...",
    "test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/"
  }
}

其中十分重要的一项就是dependencies,也就是依赖项,每次 npm install 的时候下载下来的东东都是根据这里来的。

很显然这个dependencies对象中的key是依赖项的名称,值则是版本号,但是版本号前面有的啥也没有,比如:“array-flatten”: “1.1.1”,有的有波浪号,比如:“accepts”: “~1.3.7”,也有的有插入符号,比如:“body-parser”: “^1.19.0”。那这些到底有啥区别呢?

其实也比较简单:

波浪号?匹配最新补丁版本号,也就是版本号的第三个数字。比如~1.2.3将匹配所有1.2.x版本,但将在1.3.0上停止。

插入符号^ 更宽松。 它匹配的是最新次要版本号,也就是第二个数字。比如:^ 1.2.3将匹配任何1.x.x版本,包括1.3.0,但将在2.0.0上停止。

前面啥符号也没有,很显然意思就是确定唯一指定的版本号。

当然这里还可以写>,>=,<,<=,比如:

"dependencies": {
    "accepts": "~1.3.7",
    "array-flatten": "1.1.1",
    "body-parser": "^1.19.0",
    "content-disposition": ">0.5.3",
    "content-type": "~1.0.4",
    "cookie": "^0.4.0",
    "cookie-signature": "<1.0.6",
    "debug": ">=2.6.9",
    "depd": "~1.1.2",
    "encodeurl": "<1.0.2"
  }

意思也很简单,就是大于,或者大于等于,小于或者小于等于后面的版本号。

如果前面是星号*,那意思就是匹配任何版本。

如果版本号的值是latest,那意思安装的永远是最新发布的版本。

如果只匹配版本号的其中一位,除了上面的做法外,还有一种,那就是用x,比如:1.2.x,就可以匹配1.2.1,1.2.2,…,但是1.3.0肯定是不行的,这大家都懂,不用多解释。

最后再举个栗子吧:

"dependencies": {
    "accepts": "1.3.x"
  }

原文链接:https://blog.csdn.net/sinat_36246371/article/details/94621109

原文地址:https://www.cnblogs.com/smile-fanyin/p/12514490.html

时间: 2024-07-31 22:00:46

npm生成的package.json文件中依赖项版本号前的波浪号(~)和插入符号(^)是啥意思?的相关文章

【Node.js学习笔记八】package.json文件中使用的指令

指令 说明 示例 name 包的唯一名字 "name": "camelot" preferGlobal 表示该模块更倾向于在全局范围内安装 "preferGlobal": true version 该模块的版本 "version": 0.0.1 author 项目的作者 "author": "[email protected]" description 模块的文字说明(描述) "

npm 和package.json 文件

你可能还记得使用vue-cli 创建vue项目.当创建项目完成后,我们进入到项目目录,启动cmd命令窗口,输入npm install,它就会安装一堆东西(依赖),然后再输入npm run dev, 我们就可以看到网页了,整个项目启动成功.这就是npm 最强大的地方,只使用简单的两个命令,我们就能够快速地在本地启动一个项目. npm install 就是安装模块,npm run dev  就是执行npm script中的命令.当我们执行npm命令的时候,它到哪里去找,这就要说到每个node项目中都

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

package.json文件

http://javascript.ruanyifeng.com/nodejs/packagejson.html#toc7(copy) 通常我们使用npm init命令来创建一个npm程序时,会自动生成一个package.json文件.package.json文件会描述这个NPM包的所有相关信息,包括作者.简介.包依赖.构建等信息,格式是严格的JSON格式. 常用命令 npm i --save packageName   安装依赖包 npm i --save-dev packageName np

npm脚本和package.json

1.什么是npm脚本 在创建node.js项目如一个vue项目,或一个react项目时,项目都会生成一个描述文件package.json . 比如npm允许在package.json文件里面,使用scripts字段定义脚本命令. { //... "scripts": { "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", "

nodejs第三天(核心模块与文件模块,核心模块和文件模块引入的区别,从模块外部访问模块内部,使用exports对象,npm包管理工具package.json文件,模块对象属性,将模块定义分类,npm发布流程,安装淘宝镜像,模块的管理)

核心模块与文件模块 ndejs是一个js运行环境,是一个平台.nodejs基于操作系统,封装了一些功能,http,tcp,udp,i/o模块,path,fs,stream等等 通过nodejs内置的模块,他们就称为核心模块.(他们都是nodejs内置的)http,fs,path等 文件模块:只要写一个js文件,每一个文件都是模块 .(自己写的js文件都被称为文件模块) 核心模块和文件模块引入的区别 核心模块有环境变量做调度 文件模块需要给出文件路径 注意:核心模块是nodejs内置的一些功能模块

node中 package.json 文件说明

1.概述 每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称.版本.许可证等元数据).npm install命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境. package.json文件内部就是一个JSON对象,该对象的每一个成员就是当前项目的一项设置.比如name就是项目名称,version是版本(遵守“大版本.次要版本.小版本”的格式) 2.scripts 字段 scripts指定了运行脚

package.json文件内容介绍

概述 每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称.版本.许可证等元数据).npm install命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境. 下面是一个最简单的package.json文件,只定义两项元数据:项目名称和项目版本. { "name" : "xxx", "version" : "0.0.0", } p

package.json文件各个选项含义

本文转自阮一峰老师教程,链接:http://javascript.ruanyifeng.com/nodejs/packagejson.html# 目录 概述 scripts字段 dependencies字段,devDependencies字段 peerDependencies bin字段 main字段 config 字段 其他 browser字段 engines 字段 man字段 preferGlobal字段 style字段 重要说明:本教程已经搬迁,此处不再维护,请访问新网址:wangdoc.