当前位置: 首页 > news >正文

02、Yarn的安装理念及如何破解依赖管理困境

Facebook、Google、Exponent和Tilde
构建的新的JavaScript包管理器
yarn.lock中子依赖的版本号不是固定版本
synp工具,将yarn.lock转换为package-lock.json
通过 yarn cache dir 命令查看缓存目录及内容

yarn所独有的命令:

yarn import 
yarn licenses
yarn pack
yarn why
yarn autoclean

npm所独有的命令:

npm rebuild

yarn安装机制和背后思想

在这里插入图片描述

  • checking
    检测项目中是否存在一些npm相关文件
    检查系统OS、CPU等信息

  • Resolving Packages

    • 获取当前项目中package.json定义
    • 采用遍历首层依赖的方式获取依赖包的版本信息
    • 对于没有解析过的包A,首次尝试从yarn.lock中获取到版本信息,并标记为已解析
    • 如果在yarn.lock中没有找到包A,则向Register发起请求获取满足版本范围的已知最高版本的包信息,获取后将当前包标记为已解析。
      解析包
  • fetching Packages

    • 检查缓存中是否存在当前依赖包,将缓存中不存在的依赖包下载到缓存目录
    • 如何判断缓存中是否存在当前的依赖包?
    • yarn根据cacheFolder+slug+node_modules+pkg.nam生成一个path,判断系统中是否存在该path,如果存在证明已经有缓存,不用重新下载
      在这里插入图片描述
  • linking Packages

    • 将项目中的依赖复制到项目node_modules下,遵循扁平化原则
      在这里插入图片描述
  • 构建包(Building Packages)

    • 依赖包中存在二进制包的进行编译

破解依赖管理困境

  • 在安装依赖时将依赖放到项目的node_modules文件中
  • 如果某个直接依赖A还依赖其他模块B,作为间接依赖模块B将会被下载到A的node_modules文件夹中,依此递归执行

那么如何理解“嵌套地狱”呢?

  • 项目依赖树的层级非常深,不利于调试和排查问题
  • 依赖树的不同分支里,可能存在同样版本的相同依赖

安装结果浪费了较大的空间资源,使得安装过程过慢

  • 因为目录层级太深导致文件路径太长,导致删除node_modules文件夹出现失败情况
    在这里插入图片描述
    在这里插入图片描述

相关文章:

  • Photoshop安装与配置--简单攻略版
  • 【教程】DVWA靶场渗透
  • 【无标题】微信开发者工具编译运行没问题,真机调试报错:Component is not found in path “wx://not-found“.
  • JavaScript 中的同步与异步:从单线程到事件循环
  • 睡前小故事数据集分享
  • 企业微信自建应用开发回调事件实现方案
  • javaNIO详解
  • cv::dnn::NMSBoxes和nms-free的比较
  • 测风塔布局算法详解:基于宏观分区与微观定量选址的双阶段优化方法
  • Java数据结构——ArrayList
  • Spring 依赖冲突解决方案详解
  • SAP系统工艺路线的分配物料出现旧版包材
  • 从 0~1 保姆级 详细版 PostgreSQL 数据库安装教程
  • 理解Java一些基础(八股)
  • 红帽RHEL与国产Linux系统对比:技术、生态与自主可控的博弈
  • 如何系统地入门学习stm32?
  • 【大模型】 LangChain框架 -LangChain实现问答系统
  • [C++] 高精度加法(作用 + 模板 + 例题)
  • CSS继承
  • 游戏引擎学习第235天:在 Windows 上初始化 OpenGL
  • 俄“联盟MS-26”载人飞船安全返回地球
  • 纪念沈渭滨︱在恩师沈渭滨老师指导下走上学术研究之路
  • 老旧高层遭“连环漏水”,如何携手共治解难题?
  • “中国电三之都”江苏丰县成功举办第十五届电动车展览会
  • 解读丨连续两日施压,特朗普为何着急让美联储降息
  • 马上评|古籍书店焕新归来,“故纸陈香”滋养依旧