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

npm、yarn、pnpm的对比和优略

前言

作为十多年的前端老前辈,我们从node产生之初,就接触到node包的管理工具,从开始的npm、到yarn、再到现在的pnpm,这个阶段到底经历了什么?

想要搞明白这个问题,我们就要理解,node包管理的发展历程。

我们的node包管理发展过程

1、npm最初的node包管理阶段

node刚出生的时候,npm作为node包的管理工具,它还处于一个初级阶段。

它有一些特征:

  • 安装包是串行下载,也就是我们的项目中,一个一个的下载依赖包,速度很慢。
  • 在网络不稳定的情况下,下载失败需要重新下载安装
  • 缓存机制很差劲,经常下载重复的包。
  • 包的依赖,是层层嵌套,同样的依赖,在不同的包需要下载多遍。

总结一下,就是下载速度慢,缓存机制也不行,依赖关系就是简单的嵌套机制。

2、yarn的改进

npm作为最初的包管理方案,正是因为它差劲的表现,导致了需要一款工具,针对它进行改进,这个时候,yarn就诞生了。

yarn做了这样的一些优化:

  • yarn 并行下载依赖包,显著提升安装速度。
  • yarn 的包下载,支持断点续传,失败后可以从断点继续。
  • yarn 做了更智能的本地缓存,避免重复下载
  • yarn 的下载体验,在离线情况下,做了更好的优化
  • yarn 使用扁平化的依赖包管理方案,对比嵌套结构,是一种更优策略

正是这些体验的优化,让yarn迅速在前端里面火热起来。

后续,其实npm自身,也有优化改进的一个过程。分别在其后续的版本中,做了很多优化。包括:

1、把串行下载依赖包改为并行下载。
2、做了多次的缓存优化机制。
3、针对依赖解析,重写,大幅优化解析性能
4、增加了自身workspace等能力。

其实,在npm持续优化的过程中,性能上,其实已经慢慢追上了yarn的包管理方案。

3、pnpm的创新

但是,node包管理的方案,这就到头了吗?其实不然,pnpm又在这之上,做了创新性的改善,个人预计,后续的所有前端项目,都会抛弃npm、yarn,转向使用pnpm。

那pnpm做了哪些创新呢?

  1. 大幅优化磁盘空间,所有的依赖包,只需要在全局存一份。(有经验的前端小伙伴就知道,前端项目多了,光依赖包,我们可能下了有几百个G)
  2. 极致的安装速度。(使用链接的方式,而不是把包重新复制/下载)
  3. 具有一个全局存储池,存放已经下载的依赖包。通过链接方式,访问这些包。这就是pnpm的核心优势。

总结对比

特性npmyarnpnpm
安装速度中等最快
磁盘使用中等最低
依赖隔离中等最强
缓存效率中等最好
安全性中等最好
兼容性最好

我的结论

所以,当我们搞懂了这些不同的包管理工具的不同,我想,我们后续针对工具的选择,已经不用再讨论了。

pnpm — 就是我们以后专业前端的包管理工具

结束语

前大厂前端技术专家,现大前端技术负责人,关注我,我会持续分享干货内容!

http://www.dtcms.com/a/515627.html

相关文章:

  • 离散卷积,小demo(小波信号分析)
  • Java 大视界 -- Java 大数据在智能教育学习社区互动模式创新与用户活跃度提升中的应用(426)
  • 建设比较好网站服务器用来做网站和数据库
  • C# iText7与iTextSharp导出PDF对比
  • HARDWARE 属性的Bitmap与普通Bitmap,GPU与RenderThread渲染与处理方式异同比较,Android
  • 东营市做网站的公司h5学习教程
  • 不同类型的金融产品(如股票、期货、加密货币)双时间尺度优化的差异化调整
  • xtuoj Repeat One
  • ENSP Pro Lab笔记:配置STP/RSTP/MSTP(3)
  • **发散创新:模拟计算的高级应用与实现**随着科技的飞速发展,模拟计算已经成为了众多领域的核心工
  • EasyGBS如何在平安乡村搭建无线视频联网监控系统?
  • 上新!联软科技发布新一代LeagView平台,用微服务重塑终端安全
  • 【以太来袭】2. 节点设计与部署
  • 增加网站广告位建网站首页图片哪里找
  • Yolo分割数据集错误数据删除
  • Redis原理篇(一)数据结构
  • 1022作业
  • 北京商城型网站建设网上商城的意义
  • 《3D端游云原生日志:开放世界资源加载卡顿的实战与经验沉淀》
  • 2025年渗透测试面试题总结-213(题目+回答)
  • 技术演进中的开发沉思-146 java-servlet:Servlet 在云原生时代的适配”
  • 网件路由器做网站装修公司加盟好还是自己开
  • 【自适应滤波例程】基于新息协方差匹配的自适应EKF (无迹卡尔曼滤波) vs 经典EKF对比,附MATLAB代码下载链接
  • 获得网站源文件破解WordPress站点
  • 【OpenManus深度解析】MetaGPT团队打造的开源AI智能体框架,打破Manus闭源壁垒。包括架构分层、关键技术特点等内容
  • Redis(一):缓存穿透及其解决方法(SpringBoot+mybatis-plus)
  • Tanh 函数详解
  • 【手机篇】AI深度学习在手机中框/RT四周外观检测应用方案
  • 遂宁网站优化东莞市住房和城乡建设局门户网站
  • 基于专家经验的网络异常流量检测技术研究