PNPM 包管理器
pnpm 是另一个非常流行的 JavaScript/TypeScript 包管理器,由 Facebook (现为 Meta) 的工程师 Matt Fradd 创建。
如果你把 npm 想象成传统的“应用商店”,那么 pnpm 就更像一个经过优化、专注于速度和节省空间的“极速版”或“云存储版”。
它是 npm 社区中最大的竞争对手之一,目前在许多大型项目(包括一些知名开源库和初创公司)中广泛使用。
官方文档:https://pnpm.io/zh/installation
核心特点与优势
1. 极致的速度 (Speed)
这是 pnpm 最显著的优势。它采用了 Hardlink(硬链接)技术:
- 原理:当多个不同的包依赖同一个文件(例如很多库都用了
lodash或axios)时,pnpm 不会在每个项目中复制一份该文件,而是只保留一份在服务器端,并在本地建立链接。 - 结果:
- 安装快:因为不需要重复下载大量冗余的文件。
- 打包小:最终生成的
node_modules文件夹体积通常比 npm 的小得多(有时可减少高达 30%-50%),对于大项目部署非常友好。
2. 节省存储空间 (Storage)
由于上述的硬链接机制,pnpm 极大地减少了磁盘占用。这对于内存较小或需要频繁克隆代码的开发者来说是一个巨大优势。
3. 灵活性高
虽然默认使用 npm 的 registry,但 pnpm 允许用户自定义注册源(比如使用淘宝镜像加速下载),这一点和 npm 类似,但在配置上更加灵活。
4. 生态支持
虽然早期它不如 npm 普及,但现在它的生态已经非常成熟:
- Vite (现代前端构建工具) 默认推荐使用 pnpm。
- Next.js、NestJS、React Query 等主流框架都支持 pnpm。
npm vs pnpm: 简单对比
| 特性 | npm | pnpm | yarn (v2+ / Berry) |
|---|---|---|---|
| 核心机制 | 标准安装,每个包独立安装 | 硬链接优化共享文件 | Symlinks (软链接)/Hardlinks |
| 安装速度 | 较慢 (尤其是依赖冲突或大库时) | 非常快 | 很快 |
| 磁盘占用 | 较大 (重复文件多) | 极小 | 较小 |
| 配置简单度 | 原生,无需额外工具 | 命令与 npm 几乎一样 | yarn init + 配置文件 |
| 插件/脚本兼容性 | 最高 (最原生) | 很高 (大部分兼容) | 中等 (需处理部分全局命令差异) |
如何选择?
选择 pnpm,如果:
- 你希望获得更快的安装体验。
- 你的项目依赖了很多公共库(导致磁盘占用过大)。
- 你想尝试现代的前端工具链(如 Vite + React / Svelte)。
- 你愿意为了速度和空间换取一点点生态兼容性上的微调(现在这个问题已经很少了)。
继续使用 npm,如果:
- 你是刚开始学习 JavaScript,教程和文档大多默认使用
npm。 - 你的项目非常老旧,依赖一些极度冷门、只有 npm 原生支持的插件或脚本。
- 团队内部已经统一了工具链,不想增加额外的配置步骤。
- 你是刚开始学习 JavaScript,教程和文档大多默认使用
安装PNPM
使用npm安装为全局包
1 | npm install -g pnpm |
使用PNPM
更新PNPM
1 | pnpm self-update |
更新项目内的依赖
1 | pnpm update --latest |
基本使用命令
pnpm 的命令行与 npm 非常相似,几乎可以直接互换:
1 | # 初始化项目 |
总结:
pnpm 是 npm 的强力替代品和优化版。在性能敏感的场景下,它通常优于 npm;而在兼容性要求极高的老旧项目中,npm 仍然是首选。随着社区的发展,两者的界限正在逐渐模糊,选择 pnpm 绝不会让你“无法使用”任何现代工具。
- Title: PNPM 包管理器
- Author: 清夏晚风
- Created at : 2026-06-30 23:09:22
- Updated at : 2026-09-24 06:18:38
- Link: https://blog.yuil.cn/2026/06/30/程序设计语言/Node.js/Node.js 包管理器/PNPM/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments