关于 pnpm
pnpm 是面向 JavaScript 项目的包管理器,以节省磁盘空间和支持工作区著称。通过 pnpm 命令操作,可用 corepack enable pnpm 启用。
主要功能
- 01用 pnpm install 安装项目依赖
- 02用 pnpm add zod 添加 zod 等软件包
- 03用 pnpm run build 运行 package 脚本
- 04通过 corepack enable pnpm 经由 Corepack 启用
适用场景
- 01克隆 JavaScript 仓库后快速装好依赖
- 02在本地开发或 CI 中执行构建脚本
- 03管理共享依赖的多包工作区
安装
选择你的系统或包管理器,复制命令到终端运行。
$
安装完成后运行pnpm --version确认安装成功。
命令示例
常用命令按使用顺序排列。
01
02
03
详细介绍
简体中文 | 日本語 | 한국어 | Italiano | Português Brasileiro
快速且节省磁盘空间的包管理器:
- 快速。 速度最高可达其他方案的 2 倍(参见基准测试)。
- 高效。
node_modules中的文件通过链接指向单一的内容寻址存储。 - 非常适合单体仓库。
- 严格。 包只能访问其
package.json中声明的依赖项。 - 确定性。 使用名为
pnpm-lock.yaml的锁文件。 - 可用作 Node.js 版本管理器。 参见 pnpm runtime。
- 随处可用。 支持 Windows、Linux 和 macOS。
- 久经考验。 自 2016 年起,各种规模的团队都在生产环境中使用它(使用示例)。
- 实验性 Rust 移植版。 包含 pacquet,这是一个用 Rust 编写的实验性 CLI 移植版。
- 查看与 npm 和 Yarn 的完整功能对比。
引用 Rush 团队的话:
Microsoft 在包含数百个项目、每天提交数百个 PR 的 Rush 仓库中使用 pnpm,我们发现它速度很快且十分可靠。
Platinum Sponsors
|
|
|
|
|
|
Gold Sponsors
|
|
|
|
|
|
|
|
|
|
|
Silver Sponsors
|
|
|
|
|
|
|
|
|
|
|
| ⏱️ Time.now |
通过成为赞助者支持这个项目。
背景
pnpm 使用内容寻址文件系统,在磁盘上存储所有模块目录中的文件。 使用 npm 时,如果有 100 个项目都使用 lodash,磁盘上就会有 100 份 lodash 副本。 使用 pnpm 时,lodash 会存储在内容寻址存储中,因此:
- 如果你依赖不同版本的 lodash,只有不同的文件会被添加到存储中。
如果 lodash 有 100 个文件,而新版本只改动了其中一个文件,
pnpm update只会向存储中添加 1 个新文件。 - 所有文件都保存在磁盘上的同一位置。安装软件包时,其文件会从该位置链接过来,不会占用额外的磁盘空间。链接通过硬链接或写时复制克隆来实现。
因此,你可以节省数 GB 的磁盘空间,安装速度也会快得多。
如需了解更多关于 pnpm 创建的独特 node_modules 结构,以及它为何能与 Node.js 生态系统良好兼容,请阅读这篇简短文章:扁平化 node_modules 并非唯一方式。
💖 喜欢这个项目?通过发布一条 推文告诉大家
入门指南
基准测试
pnpm 的速度最高可达 npm 和 Yarn classic 的 2 倍。请参阅所有基准测试。
在一个依赖众多的应用上进行的基准测试:
许可证
MIT,但 pnpr/ 目录除外,该目录以源代码可用的形式根据 PolyForm Shield License 1.0.0 发布。
评论
支持 Markdown