一个命令行工具,为 package.json 中的依赖覆盖项记录台账并进行安全扫描,便于安全地维护。
- Star
- 36,915
- Fork
- 1,960
- 未关闭 Issue
- 199
- 最近提交
- 12小时前
这是什么?
pnpm 是面向 JavaScript 和 Node.js 项目的包管理器,可作为 npm 和 Yarn 的替代。它不会把每个依赖复制到每个项目的 node_modules 中,而是将所有包文件统一保存在磁盘上的内容寻址存储里,再链接到各个项目,相同文件不会重复占用空间。
它实行严格的依赖解析:包只能引用自己 package.json 中明确声明的依赖,从而避免扁平 node_modules 结构下隐藏的未声明引用问题。安装结果记录在 pnpm-lock.yaml 锁文件中,便于复现构建。内置的工作区支持使其适合 monorepo 项目。
项目支持 Windows、Linux 和 macOS。它还提供用于管理 Node.js 版本的 pnpm runtime,以及一个实验性的 Rust 版 CLI,名为 pacquet。
核心功能
- 01将包文件统一存储在内容寻址存储中,项目通过链接复用,节省磁盘空间。
- 02严格的依赖隔离,包只能访问 package.json 中声明的依赖。
- 03通过 pnpm-lock.yaml 锁文件保证安装结果可复现。
- 04内置工作区支持,适合 monorepo 项目。
- 05通过 pnpm runtime 管理 Node.js 版本。
- 06支持 Windows、Linux 和 macOS。
适用场景
- 为包含大量相互关联包的大型 monorepo 安装依赖。
- 减少同时维护多个共用依赖的 JavaScript 项目时的磁盘占用。
- 在团队代码库中强制要求明确声明依赖。
- 在 CI 流水线中替换 npm 或 Yarn,以加快安装速度。
快速上手
- 1
按照官方安装指南安装
使用前须知
- Rust 移植版 pacquet 仍处于实验阶段,生产环境建议使用成熟的 CLI。
标签
常见问题
- pnpm 是什么?
- 快速且节省磁盘空间的 Node.js 包管理器,通过共享的内容寻址存储链接依赖文件。 pnpm 是面向 JavaScript 和 Node.js 项目的包管理器,可作为 npm 和 Yarn 的替代。它不会把每个依赖复制到每个项目的 node_modules 中,而是将所有包文件统一保存在磁盘上的内容寻址存储里,再链接到各个项目,相同文件不会重复占用空间。
- pnpm 可以免费使用吗?用的什么许可证?
- pnpm 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- pnpm 还在维护吗?
- 活跃维护中。pnpm 最近一次提交是在 2026年10月24日。
- pnpm 适合用来做什么?
- 为包含大量相互关联包的大型 monorepo 安装依赖。 减少同时维护多个共用依赖的 JavaScript 项目时的磁盘占用。 在团队代码库中强制要求明确声明依赖。 在 CI 流水线中替换 npm 或 Yarn,以加快安装速度。
- pnpm 怎么安装和运行?
- 按照官方安装指南安装
- 在哪里获取 pnpm?
- 源代码和安装说明在 GitHub 上:https://github.com/pnpm/pnpm
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
10956TypeScriptMIT更新于 昨天
基于 Rust 的前端工具链,整合了兼容 npm 的包管理器、Turbopack 打包器和可在浏览器运行的 WASM 版本。
2552+1 本周130RustMIT更新于 前天
一个符合 POSIX 标准的 bash 脚本,用于在用户和 shell 级别安装并切换多个 Node.js 版本。
9.6万+24 本周1.1万ShellMIT更新于 昨天
面向 Windows 的 Node.js 版本管理工具,可安装并切换多个 Node.js 版本。
4.8万+23 本周3893Inno SetupMIT更新于 13小时前
一体化 JavaScript/TypeScript 工具链,集运行时、打包器、测试运行器和包管理器于一个可执行文件。
9.6万+41 本周5119RustOther更新于 12小时前
面向 monorepo 的版本号与变更日志管理 CLI,通过贡献者随改动提交的 changeset 文件完成发版。
1.3万+9 本周852TypeScriptMIT更新于 前天