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

pnpm 入门与实践指南

pnpm 入门与实践指南

一个高效、快速、节省磁盘空间的 Node.js 包管理器替代方案。

为什么选择 pnpm?

  • 🧩 节省磁盘空间:pnpm 通过硬链接共享依赖,避免重复安装。
  • 🚀 安装速度更快:相比 npm/yarn 更高效。
  • 🔐 默认严格依赖:避免隐式依赖,项目更稳定。
  • 🛠️ 更好的工作区支持:内建 monorepo 管理工具,媲美 Lerna + Yarn Workspaces。

安装 pnpm

你可以通过 npm 安装 pnpm:

npm install -g pnpm

或者使用 corepack(Node.js >= 16.13.0):

corepack enable
corepack prepare pnpm@latest --activate

验证版本:

pnpm -v

常用命令对比

操作npmyarnpnpm
安装依赖npm installyarnpnpm install
添加依赖npm install lodashyarn add lodashpnpm add lodash
添加 dev 依赖npm install -D typescriptyarn add -D typescriptpnpm add -D typescript
删除依赖npm uninstall lodashyarn remove lodashpnpm remove lodash
清空缓存npm cache clean --forceyarn cache cleanpnpm store prune

使用 pnpm workspace 管理 Monorepo

pnpm 原生支持 monorepo,创建项目结构如下:

my-monorepo/
├── package.json
├── pnpm-workspace.yaml
└── packages/├── a/└── b/

根目录 package.json

{"name": "my-monorepo","private": true,"workspaces": ["packages/*"]
}

pnpm-workspace.yaml

packages:- 'packages/*'

常见问题与解决方案

Q: 项目引用未生效?

A: 确保在根目录运行 pnpm install,而非子项目。

Q: 某些依赖无法安装?

A: 尝试加上 --shamefully-hoist 参数兼容旧项目:

pnpm install --shamefully-hoist

小技巧

只更新部分包

pnpm update <package-name>

执行子包命令

pnpm -F <package-name> run <script>

总结

如果你正在为项目安装慢、node_modules 体积大、依赖错乱等问题困扰,pnpm 是非常值得尝试的解决方案。它的设计理念与性能优化让它在现代前端工程中表现出色,特别适合 Monorepo 场景。


参考链接

  • pnpm 官网
  • pnpm 与 npm/yarn 对比
http://www.xdnf.cn/news/16542.html

相关文章:

  • ZKmall开源商城架构工具链:Docker、k8s 部署与管理技巧
  • [leetcode] 实现 Trie (前缀树)
  • 暑期算法训练.10
  • 【智能协同云图库】智能协同云图库第八弹:基于阿里云百炼大模型—实现 AI 扩图功能
  • 1 RAG三问
  • 云端文档管理新纪元:Paperless-ngx与cpolar打造的无边界文件生态
  • GO 开发环境安装及配置
  • 【21】C# 窗体应用WinForm ——图片框PictureBox属性、方法、实例应用
  • 【C++算法】80.BFS解决FloodFill算法_岛屿数量
  • 符号计算与算法实践|使用Maple教授​​群论​​和​​图论​​课程
  • 20250729使用WPS打开xlsx格式的电子表格时候隐藏显示fx的编辑栏的方法
  • 【数据可视化-74】电信用户流失数据可视化分析:Python + Pyecharts 炫酷大屏(含完整的数据,代码)
  • 如何在Linux系统下进行C语言程序的编写和debug测试
  • 建筑兔零基础python自学记录114|正则表达式(1)-18
  • 15-C语言:第15~16天笔记
  • JSON解析
  • 力扣刷题(第一百零二天)
  • BitMart 启动中文品牌“币市”:引领加密资产本地化发展新篇章
  • 闪测影像测量软件见证工业美学中的精密制造-VisionX轮廓度评价
  • Node.js 内置模块
  • 【Mac版】Linux 入门命令行快捷键+联想记忆
  • Qt 移动应用界面设计原则
  • 2025北京师范大学数学分析考研试题
  • Java把word转HTML格式
  • 《从HTTP到IP证书:网络身份验证的下一站革命》
  • 偏二甲肼气体浓度报警控制系统
  • Transformer实战——BERT模型详解与实现
  • <RT1176系列12>DMAMUX入门级应用和DMAMUX MAP表
  • STM32项目分享:智能厨房安全系统(机智云)
  • day064-kodbox接入对象存储与配置负载均衡