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

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文件夹出现失败情况
    在这里插入图片描述
    在这里插入图片描述
http://www.xdnf.cn/news/537.html

相关文章:

  • Vivado比特流生成、下载及板级验证操作步骤
  • 力扣面试150题-- 存在重复元素 II和最长连续序列
  • 一个 CTO 的深度思考
  • 西北工业大学 | 《DeepSeek核心技术白话解读》
  • Transformer 进阶:拥抱预训练模型,迈向实际应用
  • vite 按照出错解决方案
  • Cursor新版0.49.x发布
  • fastlio用mid360录制的bag包离线建图,提示消息类型错误
  • 黑马点评秒杀优化
  • python函数之间嵌套使用yield
  • langchain langgraph 快速集成mcp: langchain-mcp-adapters
  • 历史文化探险,梧州旅游景点推荐
  • 任意文字+即梦3.0的海报设计Prompt
  • 基于尚硅谷FreeRTOS视频笔记——15—系统配制文件说明与数据规范
  • 基于MCP的RAG系统实战:用Cursor+GroundX构建复杂文档问答引擎
  • Java Spring Bean生命周期详解
  • AI 驱动抗生素发现:从靶点到化合物测试
  • 功能安全实战系列07-英飞凌TC3xx电源监控开发详解
  • 26考研——存储系统_主存储器与 CPU 的连接(3)
  • CUDA编程中影响性能的小细节总结
  • 《关于加快推进虚拟电厂发展的指导意见》解读
  • 图像预处理-图像边缘检测(流程)
  • OSI七层网络模型详解
  • Datawhale AI春训营】AI + 新能源(发电功率预测)Task1
  • 【KWDB创作者计划】_从0到1部署KWDB:踩坑指南与最佳实践
  • 深入理解 MCP 协议:开启 AI 交互新时代
  • Django 实现服务器主动给客户端发送消息的几种常见方式及其区别
  • 机器学习误差图绘
  • [HOT 100] 1964. 找出到每个位置为止最长的有效障碍赛跑路线
  • PHP中stdClass详解