这是我参与8月更文挑战的第25天,活动详情查看:8月更文挑战
前言
我们在开发过程时经常会跟package.json打交道,它主要是描述当前项目的信息,包括项目名称,项目的版本,依赖包,作者,主入口,描述等等。我们安装依赖的时候,也是根据package.json的依赖版本去安装对应的依赖。
所以说当接手一个项目的时候,我们首先先去看看它的package.json,通过这个先对这个项目有一个基本的了解。
依赖包版本号
依赖主要是存在于两次字段里面
- 一个是
dependencies,生产依赖,就是生产环境需要的依赖 - 一个是
devDependencies,开发依赖,就是开发的时候才需要的依赖
我们安装的依赖是有版本号的,npm或者yarn根据这个版本号去下载对应的版本
版本号的书写一般是major.minor.patch,代表的是主版本号.次版本号.修补版本号
比如2.5.16, 3.2.8等。
-
主版本号
主版本号的变化,代表的是功能大幅修改,一般不兼容老版本
-
次版本号
次版本号的变化,功能部分修改,兼容老版本
-
修补版本号
修补版本号的变化,不涉及功能,只是修复bug,兼容老版本
但是package.json的依赖包的版本号一般不会只写版本号,一般前面会带有修饰符修饰,这些都是有含义的。
我们先来看看例子:
{
"dependencies": {
"aaa": "^2.5.16",
"bbb": "~2.5.16"
"ccc": "2.5.16"
}
}
一般有三种,下面来说说
-
插入修饰符(^)
会安装基于当前主版本号不变,次版本号和修补版本号都是最新的版本,比如版本号是
^2.5.16, 会安装2.x.x最新的版本。但是不会跨主版本号安装,比如3.0.0。 -
波浪修饰符(~)
会安装基于当前主版本号和次版本号不变,修补版本号是最新的版本,比如版本号是
^2.5.16, 会安装2.5.x最新的版本,比如2.5.18。 -
固定版本号
会安装固定版本号的版本,不会比之大,或者比之小的版本,只会和固定版本号一致的版本。
目前
npm和yarn默认安装依赖都采用插入修饰符(^)来修饰版本。
为什么需要这些修饰符?
因为依赖包的迭代是很快的
如果我们只用固定版本号,一旦依赖包新增了内容或者修复了bug,发了新版本,如果想体验新版本,我们得更改我们得版本号,然后重新安装依赖。
但是如果有这些修饰符,我们只需重新安装依赖就行了,无需更改版本号。
是不是更加灵活了呢?
总结
以上就是package.json的依赖包版本号的知识,大家有兴趣可以看看,就可以知道自己平时安装的依赖时什么版本啦~
感谢你们的阅读。