依赖包版本号前面的 ^ 或者 ~ 或者* 的符号的含义

news/2025/3/4 11:33:06/

参考1

指定版本:比如1.2.2,遵循“大版本.次要版本.小版本”的格式规定,安装时只安装指定版本。
波浪号(tilde),作用于小版本号:比如~1.2.2,表示安装1.2.x的最新版本(不低于1.2.2),但是不安装1.3.x,也就是说安装时不改变大版本号和次要版本号。
插入号(caret),作用于此版本号:比如ˆ1.2.2,表示安装1.x.x的最新版本(不低于1.2.2),但是不安装2.x.x,也就是说安装时不改变大版本号。需要注意的是,如果大版本号为0,则插入号的行为与波浪号相同,这是因为此时处于开发阶段,即使是次要版本号变动,也可能带来程序的不兼容。
latest:安装最新版本

参考2

安装依赖包的版本如何指定?
相信大家都会经历过,我们安装一些依赖包的时候,版本号前面都会带 ^ 或者 ~ 的符号,这两个符号代表什么意思呢?

~ 会匹配最近的小版本依赖包,比如 ~1.2.3 会匹配所有 1.2.x 版本,但是不包括 1.3.0

^ 会匹配最新的大版本依赖包,比如 ^1.2.3 会匹配所有 1.x.x 的包,包括 1.3.0,但是不包括 2.0.0

  • 安装最新版本的依赖包,比如 *1.2.3 会匹配 x.x.x,

1、由于版本号的影响,所以会造成版本不统一的情况

npm是围绕着语义版本控制的思想而设计的
给定一个版本号:主版本号.次版本号.补丁版本号
主版本号: 当API发生改变,并与之前的版本不兼容的时候
次版本号: 当增加了功能,但是向后兼容的时候
补丁版本号: 当做了向后兼容的缺陷修复的时候

package.json某依赖的版本号如下:

“5.0.3”, // 安装指定的5.0.3版本
“~5.0.3”, // 安装5.0.X中最新的版本
“^5.0.3” // 安装5.X.X中最新的版本

那么该如何选择呢?当然你可以指定特定的版本号,直接写1.2.3,前面什么前缀都没有,这样固然没问题,但是如果依赖包发布新版本修复了一些小bug,那么需要手动修改package.json文件;~ 和 ^ 则可以解决这个问题。

但是需要注意 ^ 版本更新可能比较大,会造成项目代码错误,所以 建议使用 ~ 来标记版本号,这样可以保证项目不会出现大的问题,也能保证包中的小bug可以得到修复。

版本号写 *,这意味着安装最新版本的依赖包,但缺点同上,可能会造成版本不兼容,慎用!


http://www.ppmy.cn/news/602144.html

相关文章

[Vue3]学习笔记-reactive对比refsetup的两个注意点

reactive对比ref 从定义数据角度对比: ref用来定义:基本类型数据。reactive用来定义:对象(或数组)类型数据。备注:ref也可以用来定义对象(或数组)类型数据, 它内部会自动通过reacti…

校园定位系统app的设计与实现(源码+文档+报告+任务书)

本系统以HTML、CSS、JavaScript作为开发语言。采用前后端分离思想,开发工具为hubuliderx和uniapp,编程语言为JavaScript、vue3。服务器端通过Node.js开发,以本地服务器为基础,把数据库放入本地服务器,使用预留的接口地…

Scala集合与Java集合的互转函数asScala与asJava

只有引入隐式转换类 JavaConverters,才能使用Scala集合与Java集合之间的转换函数。 为方便理解,看下面的例子: import scala.collection.JavaConverters._ val javaList java.util.Arrays.asList("hi", "bye") val sca…

【Java面试题】Java基础——集合

文章目录 集合的形式List和Set的区别ArrayList和LinkedList的区别ArrayList和数组的区别ArrayList的扩容机制是什么?ArrayList有哪些特点List和Map的区别如何让map存储有序数据如何创建Map?常用的Map有哪些?如何在HashMap中插入一个数据遍历一个 List 有哪些不同的…

个人职业生涯规划书范文

个人职业生涯规划书范文篇1 第一章认识自我 1.职业兴趣 我是一个相对来说性格活泼开朗的男孩,我喜欢相对外向的工作,所以,我喜欢比较有挑战性的工作,具体的讲,我的梦想是通过自己的努力,拥有一家自己的企业…

当初急吼吼冲进来的老王们,已经撤了……撤了……

* * * 原创:刘教链 * * * 号外:今天在“刘教链Pro”发表了《内参:为何要在31k对15k后悔莫及?》,欢迎关注公众号“刘教链Pro”并阅读。 * * * 坊间消息,几个月前高调带资5000万美刀入场、“all in” AI的王…

Win10,Win11玩游戏找不到d3dx9怎么解决

相信有些朋友遇到了d3dx9_42.dll丢失的情况不知道怎么解决,而今日小编带来的这篇文章就是讲解关于d3dx9_42.dll丢失进行修复的操作内容,d3dx9_42.dll丢失怎么解决?(修复方法)d3dx9 42.dll文件是DirectX中必备文件,许多…

我们来谈谈websocket

"你一无所有地闯荡。" 一、初始WebSocket (1) 什么是websocket WebSocket是一种在单个TCP连接上进行全双工通信的协议。 WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和…