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

pnpm vs npm

pnpm vs npm:区别与常见操作指南

        在现代前端开发中,包管理工具是不可或缺的。最常见的包管理工具有 npmyarnpnpm。其中,pnpm 以其高效的磁盘利用率和更快的安装速度受到越来越多的开发者青睐。

        本文将对比 pnpmnpm,并介绍 pnpm 的常见配置及操作。


一、pnpm vs npm:核心区别

特性pnpmnpm
磁盘占用低:采用硬链接和符号链接共享 node_modules,节省磁盘空间高:每个项目都有完整的 node_modules 目录,占用大量存储
安装速度快:复用全局缓存中的依赖,安装速度快相对较慢:每次安装都会复制依赖
一致性高:严格依赖 lockfile,保证一致的依赖树低:依赖解析可能不同,导致 node_modules 结构不同
并发性高:默认启用 多线程下载,加快安装速度低:npm 默认是单线程下载
包管理方式使用全局存储 + 硬链接,避免重复下载直接复制依赖,可能存在冗余

📌 结论: pnpm 更快、更节省磁盘空间,适合中大型项目。


二、如何安装 pnpm

pnpm 可以通过 npmcorepack 安装:

# 通过 npm 安装
npm install -g pnpm

# 或者使用 corepack(Node.js 16.9+ 支持)
corepack enable
corepack prepare pnpm@latest --activate

安装完成后,验证是否安装成功:

pnpm -v

 如果输出 pnpm 的版本号,说明安装成功。

pnpm更新 

pnpm setup
pnpm self-update

  


三、设置 pnpm 镜像源(适用于国内用户)

由于 pnpm 默认使用 npmjs 官方源,国内访问可能较慢。可以切换为 淘宝镜像(npmmirror) 以提高下载速度:

pnpm config set registry https://registry.npmmirror.com

验证是否成功:

pnpm config get registry

如果返回 https://registry.npmmirror.com,则设置成功。

恢复默认源:

pnpm config delete registry

四、常见的 pnpm 操作

1. 初始化项目

pnpm init

等同于 npm init,创建 package.json

2. 安装依赖

pnpm install

安装 package.json 中所有依赖。

安装单个依赖(生产环境)

pnpm add axios

安装单个依赖(开发环境)

pnpm add eslint -D

安装指定版本

pnpm add lodash@4.17.21

3. 删除依赖

pnpm remove lodash

4. 运行脚本

pnpm run dev
pnpm run build

等同于 npm run dev

5. 升级 pnpm

pnpm add -g pnpm

6. 清理缓存

如果遇到依赖安装问题,可以尝试清理缓存:

pnpm store prune
pnpm store status

五、解决 pnpm 依赖安装问题

1. 依赖无法下载(404 Not Found 或超时)

可能是 npm 官方源连接失败,解决方案:

pnpm config set registry https://registry.npmmirror.com
pnpm install

2. 依赖安装失败,需要手动批准构建脚本

如果遇到如下警告:

Ignored build scripts: core-js, esbuild.
Run "pnpm approve-builds" to pick which dependencies should be allowed to run scripts.

执行:

pnpm approve-builds

然后选择要允许的构建脚本。

  • 空格键<space> 选中 core-jsesbuild
  • 回车键<Enter> 确认

3. 依赖安装失败,尝试重新安装

rm -rf node_modules pnpm-lock.yaml
pnpm install

这将删除 node_modules 并重新安装所有依赖。


六、总结

操作npmpnpm
初始化项目npm initpnpm init
安装所有依赖npm installpnpm install
添加依赖npm install axiospnpm add axios
移除依赖npm uninstall axiospnpm remove axios
运行脚本npm run devpnpm run dev
切换镜像源npm config set registrypnpm config set registry
清理缓存npm cache clean --forcepnpm store prune

🚀 为什么选择 pnpm?

✅ 速度快(复用缓存 + 多线程下载) ✅ 占用磁盘少(使用 hard links 共享 node_modules) ✅ 依赖管理更严格(lockfile 机制更优)

如果你正在开发 Vue、React、Node.js 项目,强烈推荐使用 pnpm 来管理依赖!🎉


📌 你学会了吗?如果遇到问题,欢迎留言交流!💡

相关文章:

  • 【C/C++】后缀表达式 蓝桥杯/ACM备赛
  • elabradio入门第二讲——BPSK数字调制与解调(插值、升余弦滤波、速率匹配、符号同步)
  • 计网week5
  • 开发提示词整理
  • Spring Cloud微服务生产级容量评估实战
  • 2025华为OD机试真题-猜数字(C++/Java/Python)-E卷-100分
  • DeepSeek教unity------State Machine
  • 网络优化工作流程
  • 文件IO、目录IO
  • C/C++字符串格式化全解析:从printf到std::format的安全演进与实战指南
  • uv 简易安装与更换国内镜像源
  • Function.prototype.__proto__==Object.prototype
  • 如何使用OPENAI的Whisper功能进行音频字母提取功能
  • 大数据技术Kafka详解 ⑥ | Kafka大厂面试题
  • FreeRTOS第11篇:FreeRTOS——移植与裁剪
  • Redis原理简述及发布订阅消息队列
  • 无人机+低轨卫星:无限距离集群网络技术详解
  • Vue 项目登录的基本流程
  • Python学习心得异常处理
  • MySQL 深分页速度慢的原因及优化方案
  • 习近平:在庆祝中华全国总工会成立100周年暨全国劳动模范和先进工作者表彰大会上的讲话
  • 早睡1小时,变化有多惊人?第一个就没想到
  • 吉林省公安厅出入境管理总队政委明志全已任省安保集团总经理
  • 第1现场|无军用物资!伊朗港口爆炸已遇难40人伤1200人
  • 因高颜值走红的女通缉犯出狱后当主播自称“改邪归正”,账号已被封
  • 仲裁法修订草案二审稿拟增加规定规制虚假仲裁