版本限定符
版本控制中比较普遍的格式:为 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""pureadmin/utils": "1.7.5"
原项目也在这个commit中更新了用法
所以一般情况下还是要先顶一下依赖的版本,否则就得时时关注依赖的更新了。
整活
这是我最近在学习的一个项目,Pure-Admin,他是一个基于Vue3、Vite、TypeScript、Element-Plus的前端后台项目,通过阅读项目源码也让我快速地建立了对vue,ts等框架和语言的相关认识,同时通过查漏补缺,也让我深入了解了相关技术细节。不过知识渊博,部分深入的知识还需要进一步阅读源码来理解掌握,好在至少快速的领悟了如何运用vue等框架来建立前端项目的相关技术实现。而这些知识的获取离不开源码与项目文档,这也体现了阅读源码与文档这一技能的重要性与必要性。
项目与相关技术文档传送门:






