怎么使用package.json对依赖包进行版本管理
这篇文章主要介绍“怎么使用package.json对依赖包进行版本管理”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用package.json对依赖包进行版本管理”文章能帮助大家解决问题。
npm版本号定义
版本格式:X.Y.Z[-string]
其含义为:
X:主版本号
Y:次版本号
Z:修正版本号
string: 先行版本号或版本编译信息
举个例子:
6.3.2-alpha
的含义为:
主版本号6,有6次不可向下兼容的更新迭代。
次版本号3,有3次小的功能迭代。
6.*.*
<=6.3.2
的依赖声明,都可以安装此新包。修正版本号2,有2次bug修改或其他非重大功能的修改。
6.*.*
<=6.3.2
的依赖声明,都可以安装此新包。先行版本号
alpha
,表示处理试验阶段。
扩展阅读:语义化版本 2.0.0
package.json怎么识别依赖版本
将按下述代码进行阐释:
"vue": "~2.5.22",
"vue-class-component": "^6.0.0",
"vue-router": "3.0.1",
"express": "latest",
"mongoose": "*",
符号
^
:锁定主版本,可更新次版本号、修正版本号和先行版本号例如
"vue-class-component": "^6.0.0"
,安装依赖时,可以安装符合6.*.*
的任意版本,只要主版本号是6即可。符号
~
:锁定主版本号和次版本号,可更新修正版本号和先行版本号例如
"vue": "~2.5.22"
,安装依赖时,可以安装符合2.5.*
的任意版本。空符号
:锁定所有版本号例如
"vue-router": "3.0.1"
,只能安装版本为3.0.1
的依赖包。符号*
:定义某个版本号范围例如
vue-router": "3.0.*"
,可以安装3.0
固定的任意版本,比如3.0.1
、3.0.2
。latest
:安装最新的稳定版本
例如
"express": "latest"
,可以安装4.18.1
(2022.06.13最新版本)。*
:安装最新发布的版本,不一定是稳定版本
例如
"mongoose": "*"
,可以安装6.0.0-rc2
、3.9.7
等。Git URL
:使用Git上发布的包引用格式:
<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]
"test": "git+ssh://git@github.com:npm/cli.git#v1.0.27"
扩展阅读:npm docs - dependencies
不要太相信npm包的版本号!
如题,这个是血的教训换来的经验。
笔者在使用system.js
时,使用的版本限制是:system.js: "^6.3.2"
。
在安装依赖的时候,意外安装了> 6.3.2
的版本,导致项目运行出错。
原因就是system.js
作者,没有按照semver
规范,进行版本号命名,导致笔者的项目,引入了不可向下兼容的更新,进而使项目运行出错。
dependencies、devDependencies与peerDependencies
dependencies
生产环境中使用到的依赖,统一安装在dependencies
下。
举个例子:
"dependencies": {
"chalk": "^2.4.2",
"commander": "^3.0.0",
"fs-extra": "^8.1.0",
"inquirer": "^6.5.0",
"mem-fs": "^1.1.3",
"mem-fs-editor": "^6.0.0",
"shelljs": "^0.8.3"
}
上述代码,是笔者做的cli
工具包的package.json
中的片段。shelljs
用于操作文件,如果改在devDependencies
声明,则用户安装当前工具包后,运行会报错。
因为devDependencies
字段声明的依赖,在npm install 工具包
时,是不会安装的。必须在dependencies
字段中声明,才会被安装。
devDependencies
生产环境不需要使用的依赖,都需要安装在devDependencies
下。
因为生产环境下,是不会安装devDependencies
字段下的依赖的。
举个例子:
"devDependencies": {
"@commitlint/cli": "^8.1.0",
"@commitlint/config-conventional": "^8.1.0",
"commitizen": "^4.0.3",
"commitlint-config-cz": "^0.12.1",
"cz-customizable": "^6.2.0",
"standard-version": "^7.0.0"
}
上述代码,是笔者做的cli
工具包的package.json
中的片段。commitizen
是笔者用于规范Git
提交规范的依赖包,只在开发环境中使用,所以在devDependencies
中声明。
peerDependencies
当开发一些插件和工具包时,对使用方的运行环境的依赖包版本有要求,可以使用peerDependencies
字段进行声明。
举个例子:
{
"name": "tea-latte",
"version": "1.3.5",
"peerDependencies": {
"tea": "2.x"
}
}
当前工具tea-latte
,依赖tea
包。而且,要求tea
包是主版本2。
当不满足要求时,控制台会进行报错处理。
注意
npm v7版本, peerDependencies会默认安装。
npm v3 到 npm v6版本,peerDependencies
不会自动安装。
关于“怎么使用package.json对依赖包进行版本管理”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341