详解:npm升级到pnpm对比优化点!!

npm@3之前

请添加图片描述

  • 依赖树层级过深,导致依赖路径过长
  • 并且相同依赖模块会被重复安装,占用电脑磁盘空间

npm@3之后

请添加图片描述
修改为扁平化处理

  • 算法复杂
  • 存在多项目间依赖相同副本的情况
  • 导致没有明确被依赖的包也可以直接引用,管理复杂

pnpm

请添加图片描述
node_modules改成非扁平化结构,并且改为使用硬链+软链的形式

软链接:创建的快捷方式,其实保存的只是一个地址
硬链接:磁盘具体的引用路径

  • 所有的文件被实际安装在.pnpm-store文件夹下面(使用 pnpm store path 查看),node_modules下面依赖会最终通过硬链接的形式链接到该文件夹,保证了不同项目间共享相同依赖版本的使用,减少依赖包副本
  • node_modules下面的直属依赖都是软链接的形式,链接到.pnpm文件下面的指定依赖
  • 在.pnpm对应直属依赖的node_modules中,分为两种链接。其中直属依赖本身使用的是硬链接链接到.pnpm-store文件夹里面;而剩余的其他依赖包是使用软链接 链接到.pnpm文件下面的指定依赖。所以!!!!只有找到依赖自身,才会通过硬链接找到磁盘中的位置,这样可以保证同一个项目里不同依赖也不会重复安装,同时不同项目之间的相同依赖也无需在磁盘中存储多份

例如:根目录下 axios 软链接到 .pnpm 目录下的 axios 文件夹中,展开 .pnpm/axios@16.1 的node_modules 文件夹,其中有 axios 所需的依赖,包含 axios、follow-redirects、form-data、proxy-from-env,其中 axios硬链接到磁盘中(即与 pnpm 仓库保存的地址一致),其它文件软链接到 .pnpm 的自身位置。

  • 优点1: 对于非明确依赖的包做隔离
  • 优点2: 不同项目的相同依赖只存在一个副本,避免了重复依赖重复安装,节约磁盘空间
  • 优点3: 同一依赖包的不同版本,那么只有版本之前不用的文件被存储起来
  • 优点4: 避免了循环引用和层级过深的问题(都在.pnpm-store文件夹的第一层)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/496562.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot源码解读与原理分析(三十三)SpringBoot整合JDBC(二)声明式事务的生效原理和控制流程

文章目录 前言10.3 声明式事务的生效原理10.3.1 TransactionAutoConfiguration10.3.2 TransactionManagementConfigurationSelector10.3.3 AutoProxyRegistrar10.3.4 InfrastructureAdvisorAutoProxyCreator10.3.5 ProxyTransactionManagementConfiguration10.3.5.1 Transactio…

求字符串所有整数最小和 - 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 100分 题解: Java / Python / C 题目描述 1.输入字符串s输出s中包含所有整数的最小和,说明:1字符串s只包含a~z,A~Z,,-, 2.合法的整数包括正整数,一个或者多…

人大金仓与mysql的差异与替换

人大金仓中不能使用~下面的符号,字段中使用”,无法识别建表语句 创建表时语句中只定义字段名.字段类型.是否是否为空 Varchar类型改为varchar(长度 char) Int(0) 类型为int4 定义主键:CONSTRAINT 键名 主键类型&#x…

js中浏览器渲染原理

JavaScript(JS)是一种广泛使用的编程语言,特别是在Web开发中。在浏览器中,JS被用于实现动态网页效果、交互性和用户体验的提升。然而,要理解JS在浏览器中的工作原理,我们首先需要了解浏览器的渲染过程。 浏…

上位机图像处理和嵌入式模块部署(当前机器视觉新形态)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 过去的机器视觉处理,大部分都是集中在上位机、或者是服务器领域,这种形式维持了很长的时间。这种业务形态下,无…

《无菌药品生产污染控制策略(CCS)技术指南》之环境监测详解

近日,为不断提高无菌药品制造水平,保障公众健康,探讨符合国内行业产业实际的CCS执行方式,中国医药设备工程协会(CPAPE)在2024年2月27日正式批准发布《无菌药品生产污染控制策略(CCS)…

Socket网络编程(二)——UDP快速入门

目录 UDP相关概念UDP是什么为什么不可靠UDP能做什么UDP包最大长度 UDP单播、广播、多播概念1. 单播、广播、多播模型图2. ip地址分类3. 子网掩码的作用:4. 广播地址5. 网段划分6. 变长子网掩码 UDP核心APIAPI-DatagramSocketApi方法(构造方法&#xff09…

nginx实现http反向代理及负载均衡

目录 一、代理概述 1、代理概念 1.1 正向代理(Forward Proxy) 1.2 反向代理(Reverse Proxy) 1.3 正向代理与反向代理的区别 2、同构代理与异构代理 2.1 同构代理 2.2 异构代理 2.3 同构代理与异构代理的区别 二、四层代…

计算机网络-网络互连和互联网(四)

1.TCP协议: 传输控制协议,面向字节流按顺序连接,可靠,全双工,可变滑动窗口,缓冲累积传送。协议号为6。下面是TCP段(段头),TCP头(传输头)&#xf…

探索AI视频模型的无限可能:OpenAI的Sora引领创新浪潮

文章目录 📑前言一、技术解析二、应用场景三、未来展望四、伦理与创意五、用户体验与互动🌤️总结 📑前言 随着人工智能技术的蓬勃发展,AI视频模型正逐渐成为科技领域的新宠。在这个变革的浪潮中,OpenAI推出的首个AI视…

【C++那些事儿】深入理解C++类与对象:从概念到实践(上)| 揭开this指针的神秘面纱

📷 江池俊: 个人主页 🔥个人专栏: ✅数据结构冒险记 ✅C那些事儿 🌅 有航道的人,再渺小也不会迷途。 文章目录 1. 面向过程和面向对象初步认识2.类的引入3.类的定义4.类的访问限定符及封装4.1 访问限定符…

使用 kubeadm 部署k8s集群

一、所有节点系统初始化 1、常规初始化 2、内核版本升级以及内核限制文件参数修改 还可以考虑将旧版本的内核卸载 二、准备nginx负载均衡器和keepalived nginx四层代理: keepalived配置: nginx检测脚本: 三、所有节点部署docker&#xff0c…