版本限定符
版本控制中比较普遍的格式:为 Major.Minor.Revision
Major表示大版本,Minor表示小版本,Revision表示修正版本号
比如1.7.5中,1就是大版本,7就是小版本,5就是修正版本号
而在package.json
文件里,包管理器有以下版本限定符 ^1.0.0
~1.0.0
>=1.0.0
<1.0.0
*
1.0.x
^
这个符号表示兼容某个版本
版本号中最左边的非0数字将被锁定,其后的版本号为任意值
或者缺少某个版本号的位置任意
^1.7.5
等同于 1.x.x
^0.7.5
等同于 0.7.x
^1.7
等同于 1.7.x
~
这个符号表示大概匹配某个版本
如果Minor版本号指定了,那么Minor版本号不变,而Revision版本号任意
如果Minor和Revision版本号未指定,那么Minor和Revision版本号任意
~1.7.0
等同于1.7.x
~1.7
同上~1
等同于1.x.x
-
1.0.0
指定使用1.0.0版本 -
>=1.0.0
<=1.0.0
>1.0.0
<1.0.0
都是字面意思 -
*
任意版本
背景
今天遇到了一个非常潜在的问题,没有修改package.json
,但pnpm
自动帮我更新了依赖,其中有个依赖@pureadmin/utils
更改了用法,导致运行时报错 storageLocal.getItem is not a function
。 翻看了package.json
,发现我是通过"@pureadmin/utils": "^1.7.5
来指定版本号的,"
^
限定符会让pnpm在一个大版本中选择更新的版本 换句话说就是在[1.0.0,2.0.0)这一版本范围中的两个小版本1.7.5和1.8.5,pnpm会自动选择1.8.5。去除版本限定符^
将
修改为"
@pureadmin/utils": "^1.7.5"
即可让pnpm限定版本为1.7.5"
pureadmin/utils": "1.7.5"
原项目也在这个commit中更新了用法
所以一般情况下还是要先顶一下依赖的版本,否则就得时时关注依赖的更新了。
整活
这是我最近在学习的一个项目,Pure-Admin
,他是一个基于Vue3
、Vite、TypeScript
、Element-Plus
的前端后台项目,通过阅读项目源码也让我快速地建立了对vue,ts等框架和语言的相关认识,同时通过查漏补缺,也让我深入了解了相关技术细节。不过知识渊博,部分深入的知识还需要进一步阅读源码来理解掌握,好在至少快速的领悟了如何运用vue等框架来建立前端项目的相关技术实现。而这些知识的获取离不开源码与项目文档,这也体现了阅读源码与文档这一技能的重要性与必要性。
项目与相关技术文档传送门: