首页 > 编程语言 >npm | Yarn | pnpm Node.js包管理器比较与安装

npm | Yarn | pnpm Node.js包管理器比较与安装

时间:2024-11-17 10:43:52浏览次数:3  
标签:npm Node 依赖 管理器 Yarn js pnpm

一、包管理器比较

参考原文链接:

2024 Node.js Package Manager 指南:npm、Yarn、pnpm 比较 — 2024 Node.js Package Manager Guide: npm, Yarn, pnpm Compared (nodesource.com)

以下是对 Node.js 的三个包管理工具 npm、Yarn 和 pnpm 的优缺点总结:

npm(Node Package Manager)

优点:

  1. 庞大的包仓库: npm 拥有超过两百万的包,覆盖广泛的功能和用例,为开发者提供了丰富的开源库和模块。
  2. Node.js 的默认选择: npm 与 Node.js 生态系统集成良好,作为默认的包管理器,简化了依赖管理。
  3. 成熟的生态系统: npm 经过多年发展,拥有稳定的基础设施和社区支持。
  4. 全面的命令行界面(CLI): 提供了广泛的命令和选项,便于管理包、脚本和配置。
  5. 语义化版本控制: 遵循 SemVer 规则,帮助开发者准确指定依赖版本范围。
  6. 自定义脚本: 允许在 package.json 中定义自定义脚本,通过 npm run 执行,自动化开发任务。
  7. 与 npm 仓库集成: 与 npm 仓库集成,便于发布和发现包。

缺点:

  1. 性能问题: 在大型项目中可能会遇到性能问题,如安装速度慢和资源消耗高。
  2. 版本控制复杂性: 管理包版本和依赖冲突可能具有挑战性,需要手动干预。
  3. 依赖膨胀: 默认的本地安装可能导致不必要的依赖积累,增加项目大小和复杂性。
  4. 安全问题: 第三方代码可能存在安全漏洞,需要开发者积极应对。
  5. 依赖于中心化仓库: 依赖于中心化仓库可能导致单点故障和网络瓶颈。
  6. 有限的离线支持: 离线能力不如其他一些包管理器,如 Yarn。

Yarn

优点:

  1. 性能提升: Yarn 提供更快的安装时间和更有效的依赖解析。
  2. 确定性依赖解析: 通过 yarn.lock 文件确保依赖的一致性。
  3. 离线支持: 缓存包,允许在离线状态下安装依赖。
  4. 直观的 CLI: 提供清晰、简洁的命令,易于使用。
  5. 改进的错误处理: 提供详细的错误信息和诊断。
  6. 向后兼容性: 与 npm 兼容,方便从 npm 过渡到 Yarn。

缺点:

  1. 兼容性问题: 与 npm 之间可能存在兼容性问题。
  2. 资源消耗: 缓存和并行安装可能消耗大量系统资源。
  3. 社区分裂: 生态系统和社区支持可能不如 npm 广泛。
  4. 锁文件漂移: 如果不更新锁文件,可能会导致锁文件与实际依赖不一致。
  5. 配置选项有限: 配置选项不如 npm 精细。

pnpm(Performant npm)

优点:

  1. 共享依赖: 通过共享依赖模型减少磁盘空间使用。
  2. 高效安装: 利用共享依赖和缓存机制,提供快速的安装时间。
  3. 确定性依赖解析: 通过 pnpm-lock.yaml 文件确保依赖的一致性。
  4. 减少网络带宽使用: 跨项目共享包下载,减少网络数据传输。
  5. 改进的缓存效率: 高效的缓存机制,减少重复下载。
  6. CLI: 提供直观的 CLI,易于执行常见任务。
  7. 与 npm 兼容: 与 npm 仓库和工作流兼容。

缺点:

  1. 学习曲线: 需要学习新的命令和工作流程。
  2. 兼容性问题: 与 npm/Yarn 之间可能存在兼容性问题。
  3. 资源消耗: 缓存依赖和共享包管理可能消耗系统资源。
  4. 锁文件处理: 管理锁文件并确保其一致性可能具有挑战性。
  5. 社区支持: 生态系统和社区支持可能不如 npm 和 Yarn 广泛。

根据前面提到的一些优缺点,结合原文作者研究及其个人观点,我们可以看到下面的对比图,数字 1 表示最低分,数字 3 表示最高分:

特性npmYarnpnpm
包仓库数量333
性能233
成熟的生态系统322
全面的命令行界面(CLI)333
离线支持133
安全性122
依赖膨胀133
减少网络带宽使用223
改进的缓存效率223
确定性依赖解析233
磁盘使用123
锁文件处理211

npm、Yarn 和 pnpm 之间的命令比较

以下是 npm、yarn 和 pnpm 之间的命令比较:

功能描述npm commandYarn commandpnpm equivalent
安装依赖npm installyarnpnpm install
安装指定的包到项目中npm install [pkg]yarn add [pkg]pnpm add [pkg]
卸载项目中的指定包npm uninstall [pkg]yarn remove [pkg]pnpm remove [pkg]
更新当前项目的包到最新版本npm updateyarn upgradepnpm update
列出项目中安装的所有包npm listyarn listpnpm list
运行npm脚本npm run [scriptName]yarn [scriptName]pnpm [scriptName]
运行一个命令而不安装它npx [command]yarn dlx [command]pnpm dlx [command]
执行一个命令而不将包添加到项目中npm execyarn exec [commandName]pnpm exec [commandName]
初始化一个新的项目并可选择初始化器npm init [initializer]yarn create [initializer]pnpm create [initializer]

二、安装与使用

1、安装Node.js

推荐参考:Node.js | npm下载安装及环境配置教程

2、Yarn / pnpm安装与配置

推荐参考:


附录

推荐资料:

标签:npm,Node,依赖,管理器,Yarn,js,pnpm
From: https://blog.csdn.net/yimeng_Sama/article/details/143827870

相关文章

  • 镜像部署 Node.js 环境
    操作场景腾讯云市场中提供了例如包含多种操作系统、热门软件等不同类型的镜像。您可选择这些镜像,在腾讯云云服务器(CVM)上快速部署具有较高稳定性和安全性的软件环境以及个人网站。本文档介绍在Linux操作系统的腾讯云云服务器(CVM)上通过镜像完成Node.js环境部署。技能要求......
  • 基于vue.js和node.js的在线购物网站设计和实现-毕业设计源码83077
    目 录摘要1绪论1.1研究背景1.2 研究意义1.3论文结构与章节安排2 系统分析2.1可行性分析2.2系统流程分析2.2.1数据新增流程2.2.2 数据删除流程2.3 系统功能分析2.3.1功能性分析2.3.2非功能性分析2.4 系统用例分析3系统总体设计3......
  • node.js毕设星光航空购票系统(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于航空购票系统的研究,现有研究主要集中在系统设计、用户体验优化、支付方式多样化等方面。然而,专门针对星光航空购票系统的设计与实现的综合性研究较......
  • node.js毕设自律饮食与运动管理系统(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于自律饮食与运动管理系统的研究,现有研究主要以单独的饮食管理或运动管理为主,专门针对将自律、饮食与运动整合到一个系统中的研究较少。在国内外,饮食......
  • node.js毕设鲜花商城管理系统(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容选题背景关于鲜花商城管理系统的研究,现有研究主要以传统的商城管理模式为主,专门针对鲜花这一特殊商品在商城管理系统中的个性化研究较少。在国内外的研究现状中,大部......
  • node.js毕设新能源汽车动态单价推荐(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容选题背景关于新能源汽车动态单价推荐的研究,现有研究主要集中在新能源汽车的成本分析、市场定价策略以及消费者行为等方面,专门针对动态单价推荐系统的研究较少。在国......
  • Node.js | npm下载安装及环境配置教程
    前言:npm是Nodejs下的包管理器,在下载Node.js后自动安装,因此本文同时适合Node.js/npm的下载安装及环境配置。一、软件安装Node.js中文网官网下载页:Node.js中文网(nodejs.com.cn)1)进入下载页,选择需要的版本下载(建议选择“长期稳定版”)。2)打开安装程序(以.m......
  • 计算机毕业设计—15565 nodejs 蒲公英旅游系统(源码免费领)
    摘 要随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。蒲公英旅游系统设计,主要的模块包括查看后台首页、轮播图(轮播图管理)、公告管理(公告)、资源管理(旅游资讯、资讯分类)、交流管理(旅游攻略、攻略分类)、系统用户......
  • 什么是Google Kubernetes Engine (GKE) 中Node Pool 和 Pod
    在GoogleKubernetesEngine(GKE)中,NodePool和Pod是Kubernetes集群中的两个关键概念,它们的关系密切但作用不同:简单类比:想象一个工厂(Kubernetes集群):NodePool: 是工厂里的多个相同的车间,每个车间都有相同的机器设备。Pod: 是车间里的生产线,每个生产线都在进行不......
  • 使用nvm管理多版本node的详细教程
    在开发工作中,经常在不同的项目中使用不同版本的node去开发,换一个项目在重新安装node太麻烦,所以使用nvm来管理多版本的node开发环境,就非常方便了,所以本文给大家介绍了如何使用nvm管理多版本node,需要的朋友可以参考下 前言在开发工作中,经常在不同的项目中使用不同版本的n......