本文发布于 2022-12-20, 最后更新于 1273 天前,其中的信息可能已经有所发展或是发生改变。

文章摘要

版本限定符 版本控制中比较普遍的格式:为 Major.Minor.Revision Major表示大版本,Minor表示小版本,Revision表示修正版本号 比如1.7.5中,1就是大版本,7就是小版本,5就是修正版本号 Ref:版本号百度百科 而在 package.json 文件里,包管理器有以下版本限定符 ^1.0.0 ~1.0.0 =1.0.0 1.0.0 * 1.0.x ^ 这个符号表示…

版本限定符

版本控制中比较普遍的格式:为 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"即可让pnpm限定版本为1.7.5

原项目也在这个commit中更新了用法

所以一般情况下还是要先顶一下依赖的版本,否则就得时时关注依赖的更新了。

整活

这是我最近在学习的一个项目,Pure-Admin,他是一个基于Vue3、Vite、TypeScriptElement-Plus的前端后台项目,通过阅读项目源码也让我快速地建立了对vue,ts等框架和语言的相关认识,同时通过查漏补缺,也让我深入了解了相关技术细节。不过知识渊博,部分深入的知识还需要进一步阅读源码来理解掌握,好在至少快速的领悟了如何运用vue等框架来建立前端项目的相关技术实现。而这些知识的获取离不开源码与项目文档,这也体现了阅读源码与文档这一技能的重要性与必要性。

项目与相关技术文档传送门:

九仞之行

严于律己,宽以待人,深自警省,讷言敏行

订阅
💬 评论 (0)

还没有评论呢 ~ 快来抢沙发吧 🛋️

编辑器加载中…