【错误处理】npm install 指定版本结果 install 最新版本

一、问题现象

package.json中配置的是"test": "^1.0.0" ,结果下载的test组件版本却是最新版本1.2.0

二、问题原因

范围版本符号:如 ^1.2.3 允许安装与之兼容的任何版本,~1.2.3 则允许安装兼容小版本的更新

三、问题解决

去掉^符号,相当于指定版本安装

四、历史npm install不受影响原因

  1. npm cache中已有1.0.0版本的缓存
  2. 与其他组件库存在依赖关系,已指定对应版本

五、涉及npm原理

npm cache

npm cachenpm 包管理器的一个内置缓存系统,用于存储和管理从 registry(npm 官方仓库)下载的软件包, 下载过一次之后就会存在缓存, 方便下次安装相同软件包时提升install效率

npm install 机制

核心步骤

  1. 先检查package.json中的依赖项
  2. 从中解析出依赖关系, 形成依赖树
  3. npm库中下载所需npm包, 若已存在在本地缓存中则直接读取
  4. 解压所下载的内容到node_modules

范围版本符号(常见用法区别)

  • = 或者 不含任何符号:锁定到具体版本,例如 package-name@1.0.0 或者 package-name@1.0.0 都会安装 1.0.0 版本的 package-name
  • ~:允许小版本(patch)更新,例如 ~1.2.3 会安装与 1.2.3 兼容的所有 1.2.x 版本。
  • ^:允许次版本(minor)更新,例如 ^1.2.3 会安装与 1.2.3 兼容的所有 1.x.x 版本,这意味着它可以更新至 1.3.0 但不会更新到 2.0.0。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值