• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

同项目混用npm和yarn出现版本自动更新问题

武飞扬头像
大狼狗
帮助2

1.前置知识:

package.json中^,~的详细说明

(1)指定版本:比如"axios": “0.21.0”,表示安装0.21.0的版本;
(2)波浪号~指定版本:比如 “core-js”: “~3.6.5”, 表示安装3.6.x的最新1213版本(不低于3.6.5),但是不安装3.7.x,也就是说安装时不改变大版本号和次要版本号
(3)^指定版本:比如 “antd”: “^3.1.4”,,表示安装3.1.4及以上的版本,但是不安装4.0.0,也就是说安装时不改变大版本号。

package-lock.json的作用
npm是一个用于管理package之间依赖关系的管理器,它允许开发者在pacakge.json中间标出自己项目对npm各库包的依赖。在首次安装npm各库包的时候会自动生成 package-lock.json。

而 package-lock.json 就是用来记录当前状态下实际安装的各个npm package的具体来源和版本号。

确定了安装包的依赖之后,后续重新安装的时候都会生成相同的依赖,而忽略项目开发过程中有些依赖已经发生的更新。

简单的说,package-lock.json 就是确保你项目中的依赖不会在你不知不觉中自动升级。

yarn.lock的作用

yarn.lock作用和package-lock.json作用相同,但yarn.lock是yarn安装依赖时生成的。

**注意:**在使用npm进行依赖安装时yarn.lock文件不生效,在使用yarn进行依赖安装时package-lock.json文件不生效

2.在同一个项目混用yarn和npm时会出现的问题

这里以typescript依赖包为例

  1. 原项目中使用package.json定义项目中需要依赖的包,这里的typescript版本号为^4.2.4

    package.json:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c5fTZRJ3-1650429292541)(C:\Users\zlb\AppData\Roaming\Typora\typora-user-images\image-20220420111121320.png)]

  1. 原项目是用npm来进行包管理,从而生成package-lock.json文件,里面存储了各个依赖的具体来源和版本号,其中typescript的版本号为4.2.4,所以今后使用npm进行安装依赖时都会安装typescript的4.2.4版本,不会进行自动升级

    package-lock.json:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-82tZWavP-1650429292543)(C:\Users\zlb\AppData\Roaming\Typora\typora-user-images\image-20220420111646360.png)]

  2. 如开发者使用yarn命令来进行包依赖安装,则package-lock.json文件无效,只看package.json中的文件,但typescript版本号为^4.2.4,从而会安装4.x.x版本中最新版本即为4.6.3版本,同时生成对应yarn.lock文件

    yarn.lock.json:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5BKJWeb6-1650429292543)(C:\Users\zlb\AppData\Roaming\Typora\typora-user-images\image-20220420112648693.png)]

    node_modules/typescript/package.json:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FYKCD0DY-1650429292544)(C:\Users\zlb\AppData\Roaming\Typora\typora-user-images\image-20220420112728796.png)]

  3. 启动项目会出现typescript类型报错,其原因是因为原项目是在4.2.4typescript版本环境下编写,但使用yarn进行依赖安装把typescript版本自动更新成了 4.6.3版本,同时4.2.4和4.6.3版本的typescript在类型校验上进行了较大的改进和优化,可以检测出更多的类型问题例如:

    • 对unknown类型了有了严格的校验
    • 对undefined类型有了更加严格的校验

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T1MtejHl-1650429292545)(C:\Users\zlb\AppData\Roaming\Typora\typora-user-images\image-20220420113016240.png)]

3.如何选择正确的包管理工具以及安装依赖

  1. 将依赖安装到本地后,观察其根目录决定使用什么包管理工具
    • 如有yarn.lock文件而没有package-lock.json文件则项目是以yarn 来进行包管理
    • 如有package-lock.json文件而没有yarn.lock文件则项目是以npm来进行包管理
  2. 使用yarn进行包管理的项目使用yarn命令来进行依赖安装
  3. 使用npm进行包管理的项目使用npm install 来进行依赖安装

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhicjbjc
系列文章
更多 icon
同类精品
更多 icon
继续加载