横向对比 npm、pnpm、tnpm、yarn 优缺点

这篇具有很好参考价值的文章主要介绍了横向对比 npm、pnpm、tnpm、yarn 优缺点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前端工程化是现代Web开发中不可或缺的一环,它的出现极大地提升了前端开发的效率和质量。

在过去,前端开发依赖于手动管理文件和依赖,这导致了许多问题,如版本冲突依赖混乱构建繁琐等。而今,随着众多前端工程化工具的出现,前端开发的效率得到了大大的提高。

随着前端工程化工具生态的日益繁荣,如何选择这些工具成为作为初学者的我们面对的第一个难题,究竟是应该使用 npm 还是 yarn, 或者说什么场景更适合使用 yarn, 什么场景适合使用 pnpm, 让本就一头雾水的我们更加难以抉择。

本文将介绍四种常见的前端包管理工具,并对比这四种工具的优劣,希望能对你的前端之旅有点小小的启发~

npm

npm (node package manager) 是 Node.js 的官方包管理工具,同时也是 JavaScript 生态系统中最常用的包管理工具之一。

作为 node 的孪生兄弟, 在 node 安装之时,npm 也会一并安装。

与此同时,得益于 npm 繁荣的生态,npm 的功能也非常强大,例如我们熟知的 vue、react、axios 等等,都是以 npm 包的形式在前端工程化项目中引入使用的。

横向对比 npm、pnpm、tnpm、yarn 优缺点,面试,前端,npm,前端,node.js,求职招聘,包管理工具,yarn,pnpm

那 npm 这种包管理工具显著的优缺点有哪些呢:

优点

1、默认集成
前文说到,在 node 安装之时,npm 也会一并安装。因此相比于其他 npm 工具来说,npm 作为 Node.js 的默认包管理工具,不需要额外安装和配置,即可直接使用。

2、成熟稳定
作为包管理工具的鼻祖,pnpm、tnpm、yarn 本质是对 npm 的二次封装,它们在底层仍然使用 npm 的包管理机制。

并且随着近年来 npm 的多次升级,之前广受大家吐槽的安装速度慢、安全性不高、性能一般的问题也得到了很大的改善。

缺点

1、安装速度慢
相对于一些竞对工具,如 pnpm 和 yarn ,npm 在下载和安装依赖包时速度较慢,这也是大家早期吐槽最多的点。

但是随着 npm 近年来的不断优化,在 npm 5.x 版本中,“package-lock.json” 的引入使得 npm 在安装依赖时通过生成一个锁定文件,记录了精确的依赖版本和依赖树结构,从而更有效地处理依赖解析和版本管理,减少了重复下载和解析依赖的次数。

2、幽灵依赖
在 npm3.x 版本之前,npm 使用的是嵌套依赖管理方式,即每个包都有其自己的依赖树。这种方式可能导致依赖冗余版本冲突的问题,使得项目变得复杂且难以维护。

为了解决 npm 包依赖冗余版本冲突的问题,从 npm 3.x 版本开始,npm 采用了扁平化的包管理方式。扁平化的管理方式将所有依赖项直接安装在项目的根目录下,避免了嵌套的依赖树。

这样一来,可以更好地处理版本冲突依赖冗余的问题,提高了包的安装速度和可靠性,但随之也带来了幽灵依赖的问题。

所谓幽灵依赖,指的是项目的依赖树中存在一些没有在package.json中明确声明的依赖。这些依赖通常是由其他依赖项间接引入的,而不是直接在项目中声明的,后续文章为大家详细讲解~

yarn

Yarn 是在2016年由 Facebook、Google、Exponent 和 Tilde 联合推出的一个包管理工具。

它的出现主要是为了解决当时 npm 安装速度慢依赖冗余的问题。

横向对比 npm、pnpm、tnpm、yarn 优缺点,面试,前端,npm,前端,node.js,求职招聘,包管理工具,yarn,pnpm

优点

为了解决 npm 安装速度慢的问题,yarn 引入了并行下载本地缓存机制,通过同时下载多个包和利用本地缓存,显著提高了安装速度。

其次,通过引入锁定文件 yarn.lock,确保项目依赖版本一致性,避免版本冲突问题。

此外,yarn还增加了安全性的功能,通过引入校验和机制来确保下载的包的完整性和安全性。

yarn的出现弥补了当时 npm 在一些性能和安全方面的缺点,提供了更好的用户体验和性能优化,逐渐赢得了开发者的青睐,并成为JavaScript生态系统中流行的包管理工具之一,尤其在国外,使用 yarn 作为包管理工具的程序员和公司非常多。

缺点

1、幽灵依赖
和 npm 一样的是,yarn 也存在幽灵依赖的问题。这是因为 yarn 在依赖管理方式上采用的也是扁平化的方式。

这种扁平化的方式可以减少依赖冗余版本冲突的问题,提高了安装速度和可靠性,但也带来了幽灵依赖的问题。

pnpm

pnpm 的第一个稳定版本(1.0.0)发布于 2017 年 5 月。

相比于 pnpm 和 yarn 来说,pnpm 的存在可以说是完全避免了幽灵依赖的问题,因此近年来受到了很多前端工程师的追捧。

优点

1、有效的磁盘使用
pnpm 使用了共享的存储策略,来存储所有项目的所有包版本以及每个项目所需的符号链接。

这意味着,如果多个项目依赖于同一个包的同一个版本,pnpm 只会在磁盘上存储一次。

对于 npm 和 yarn ,它们将为每个项目的 node_modules 文件夹分别存储每个依赖包的副本。

横向对比 npm、pnpm、tnpm、yarn 优缺点,面试,前端,npm,前端,node.js,求职招聘,包管理工具,yarn,pnpm

2、更严格的依赖关系解析
pnpm 不会让包访问那些没有被明确列为其依赖的包。 这使得依赖关系更清晰,也帮助避免了一些难以追踪的问题。

缺点

1、兼容性问题
由于 pnpm 的依赖关系解析方式更严格,某些包可能会在 pnpm 下运行不正常,尽管在 npm 或 yarn 下可以正常运行。

2、手动维护依赖
pnpm 为了避免幽灵依赖的存在,要求所有的依赖都需要在 pakeage.json 文件中显式声明,随着依赖项的增多,package.json 文件的维护难度也会增加。

tnpm

tnpm 是一款由淘宝团队开发和维护的包管理工具,它是针对 npm 的一种替代方案。tnpm 的出现,旨在解决 npm 在中国开发者中的使用体验问题,特别是在网络访问速度和包安装速度方面。

优点

1、更快的下载速度
tnpm 默认使用淘宝镜像源,它是在国内搭建的一个 npm 镜像源。由于连接国内服务器的速度更快,使用淘宝镜像可以加快包的下载速度。

2、并行安装
tnpm 通过并行安装依赖项来提高安装速度。相比 npm 的串行安装,tnpm 可以同时下载和安装多个包,提高了安装的效率。

缺点

1、幽灵依赖
与 npm 类似的是,tnpm 也存在幽灵依赖的问题。

幽灵依赖最大的弊端在于它会使得项目中的依赖项变得不可控,一旦幽灵依赖被删除或更新,可能会影响到项目中功能的正常使用,并且随着依赖项的增多,幽灵依赖出现的概率也会更大。

总结

总的来说,npm、tnpm、pnpm、yarn 这四种包管理器各有优缺点,相比于 pnpm 来说,幽灵依赖确实是 npm、tnpm、yarn 最明显的短板。

但近年来,很多大佬们自己封装的幽灵依赖检测工具一定程度上也能避免幽灵依赖带来的困扰。

就我个人而言,对npm、tnpm、pnpm、yarn没有明显的倾向,只要保证在同一个项目中从始至终使用一种包管理工具就可以啦~文章来源地址https://www.toymoban.com/news/detail-692153.html

到了这里,关于横向对比 npm、pnpm、tnpm、yarn 优缺点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 简述Keepalived LVS 原理以及两者的优缺点对比分析

    本文章主要围绕Keepalived,lvs的工作原理以及两者的优缺点进行对比分析。My BLOG:https://blog.itwk.cc 什么是Keepalived? Keepalived是基于VRRP协议(Virtual Router Redundancy Protocol)是Linux下一个轻量级高可用解决方案(HA),其实两种不同的含义,广义来讲,是指整个系统的高可用行,狭

    2023年04月08日
    浏览(12)
  • YOLO系列算法与YOLOv3的优缺点对比

    引言 以往的二阶段检测算法,例如Faster-RCNN,在检测时需要经过两步:边框回归和 softmax分类。由于大量预选框的生成,该方法检测精度较高,但实时性较差。 鉴于此,YOLO之父Joseph Redmon创新性的提出了通过直接回归的方式获取目标检测的具体位置信息和类别分类信息,极大

    2024年02月05日
    浏览(9)
  • http和websocket对服务器的优缺点对比

    HTTP的优点: 1. 简单易用:HTTP协议是一种简单易用的协议,可以轻松地实现客户端和服务器之间的通信。 2. 可缓存:HTTP协议支持缓存,可以减少服务器的负载,提高响应速度。 3. 可靠性高:HTTP协议使用TCP协议作为传输层协议,具有可靠性高的特点。 HTTP的缺点: 1. 频繁的连

    2024年02月09日
    浏览(11)
  • 常用Python自动化测试框架有哪些?优缺点对比

    随着技术的进步和自动化技术的出现,市面上出现了一些自动化测试框架。只需要进行一些适用性和效率参数的调整,这些自动化测试框架就能够开箱即用,大大节省了测试时间。而且由于这些框架被广泛使用,他们具有很好的健壮性,并且具有广泛多样的用例集和技术来轻

    2024年02月03日
    浏览(14)
  • 项目协作软件对比分析:各大竞品的优缺点客观评析

    项目协作软件对比分析:各大竞品的优缺点客观评析

    随着科技的发展,越来越多的企业和团队开始使用项目协作软件来提高工作效率和协同能力。然而,市场上众多的项目协作软件让许多用户感到困惑,不知道如何选择最适合自己的工具。本文将从多个角度对目前市场上的主要项目协作软件进行客观分析,帮助读者找到最符合

    2024年02月09日
    浏览(13)
  • 对比flink cdc和canal获取mysql binlog优缺点

    Flink CDC和Canal都是用于获取MySQL binlog的工具,但是有以下几点优缺点对比: Flink CDC是一个基于Flink的库,可以直接在Flink中使用,无需额外的组件或服务,而Canal是一个独立的服务,需要单独部署和运行,增加了系统的复杂度和成本 Flink CDC支持多种数据库的数据变化捕获,如

    2024年02月11日
    浏览(15)
  • 韦根、RS485、TCP/IP三种门禁通讯方式的优缺点对比

    韦根、RS485、TCP/IP三种门禁通讯方式的优缺点对比

    韦根通讯 韦根通讯协议是由摩托罗拉公司制定的一种通讯协议,具有国际统一标准。它适用于涉及门禁控制系统的读卡器和卡片的许多特性,是智能门禁最早使用的门禁通讯方式,但现在基本已经看不到它的身影了。 优点: 实现简单,基本上任意单片机都可以实现,成本低

    2024年02月13日
    浏览(11)
  • 路由器IP指派DHCP和BOOTP不同之处和优缺点对比

    DHCP (Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段,在RFC 2131中有详细的描述。DHCP有3个端口,其中

    2024年02月07日
    浏览(11)
  • QT中在MainWindow(主窗口)中创建Dialog(对话框)两种方式优缺点对比

    QT中在MainWindow(主窗口)中创建Dialog(对话框)两种方式优缺点对比

    新建窗口工程 利用ui工具在Window中创建三个按钮 打开对话框 关闭对话框 改变三个按钮的名称 openDialog closeDialog 在工程中添加QDialog类,名字是Dialog 在Dialog中创建label控件,写上HelloWorld 最关键的一步,在window的类中创建Dialog私有对象指针 在window.cpp中编写指针myDialog的初始化代

    2024年02月07日
    浏览(14)
  • 服务网格技术对比:深入比较Istio、Linkerd和Envoy等服务网格解决方案的优缺点

    服务网格技术对比:深入比较Istio、Linkerd和Envoy等服务网格解决方案的优缺点

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月15日
    浏览(18)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包