等了大半年,pnpm 11.0 终于正式发布了!

这一版根本不是小修小补,而是从底层到体验全重构:
抛弃旧 JSON 索引、换上 SQLite、安装速度再上台阶;
默认加强供应链安全,新发包强制等 1 天再允许安装;
自带原生 publish,不再调用 npm CLI;
甚至连全局安装都彻底隔离,互不干扰......
再加上官方透露:Rust 重写的 Pacquet 已经重启开发。 很明显:pnpm 在下一盘大棋。
今天这篇,用最实在、最不绕弯的话,告诉你 pnpm 11 到底强在哪、升级要注意什么,看完你就知道该不该冲。

一、最狠升级:Store v11 + SQLite,安装真的快疯了
以前 pnpm 快,是因为硬链接、软链接玩得溜。 这次 v11 直接把存储引擎换了。
- 抛弃以前每个包一个 JSON 的索引
- 换成单一 SQLite 数据库:index.db
- 包信息、摘要、哈希直接存在库里
- 减少大量系统调用、文件读取、重复解析
结果就是: 冷安装更快、热安装更快、monorepo 更快。 尤其是大项目、多包仓库,差距肉眼可见。
而且 95% 的包能跨 Node 版本、跨架构复用, 升级 Node 不用重新下一遍依赖。
二、安全默认更强:新包必须等 1 天才能装
pnpm 11 直接把供应链安全做成默认:
minimumReleaseAge: 1440(默认 1 天)blockExoticSubdeps: true(拦截怪异依赖)
意思很简单: 刚发布的包,必须等 24 小时才能被你安装。
防止 you-know-what 式投毒、抢发恶意包。 不想等也能关,但大多数公司和团队都会直接开着。
三、终于摆脱 npm:publish/login 全原生实现
以前 pnpm publish 本质是调用 npm CLI。 现在 全部重写原生实现,不依赖 npm 了:
- publish
- login / logout
- view / deprecate / unpublish
- dist-tag / version
包括 OTP 验证、二维码登录、交互提示全都自带。
环境变量也从 NPM_CONFIG_OTP 换成 PNPM_CONFIG_OTP, 更干净、更稳定、更少玄学报错。
四、全局安装彻底隔离:再也不会互相炸环境
这是老 pnpm 用户怨念最深的点: 全局包会互相冲突、版本打架、bin 错乱。
pnpm 11 直接解决:
- 每个
pnpm add -g都是独立目录 - 自带独立 package.json、node_modules、lockfile
- 互不干扰,不 hoist,不共享依赖
- 全局 bin 统一放到
PNPM_HOME/bin
以后全局装什么都不怕炸环境了。
五、超实用新功能:pack-app / sbom / ci / clean
pnpm pack-app
把 Node 项目直接打成单可执行文件(SEA), 不用配置、不用插件,一行打包分发。
pnpm sbom
一键生成软件物料清单:CycloneDX / SPDX, 公司合规、安全扫描直接满足。
pnpm ci + pnpm clean
pnpm clean:一键删所有项目 node_modulespnpm ci:clean + frozen-lockfile 一体
CI 脚本直接少写三行。
pnpm peers check
peerDependencies 问题一键检查, 不用再盯着红色警告瞎猜。
六、必须注意:破坏性变化(升级前看这一段就够)
-
要求 Node.js ≥22 不支持 18/19/20/21,CI 要先升 Node。
-
配置大改
.npmrc只留认证和 registry- 其他配置搬到
pnpm-workspace.yaml或全局config.yaml - 环境变量从
npm_config_*→pnpm_config_*
-
构建配置统一 旧的
onlyBuiltDependencies/neverBuiltDependencies全部删掉 换成allowBuilds:yamlallowBuilds: electron: true core-js: false -
audit 从 CVE 换成 GHSA
ignoreCves→ignoreGhsas -
升级完必须执行
bashpnpm setup
七、重磅消息:Rust 重写的 Pacquet 重启了
文章最后官方放了个大料: 基于 Rust 重构的 Pacquet 项目重新启动开发。
意味着不远的将来: pnpm 将拥有 Rust 级别的速度、内存占用、启动性能。 现在的 pnpm 11 只是前奏。
总结一句实在话
pnpm 11.0 不是"新版本", 是下一代包管理器的正式定型:
- 更快(SQLite)
- 更安全(默认供应链防护)
- 更干净(原生 publish、纯 ESM)
- 更稳(全局隔离、配置规范化)
- 未来更强(Rust 重写归来)
老用户建议直接升; 还在用 npm / yarn 的,真的可以试试了。
快速升级
bash
npm install -g pnpm@latest
升级完跑一遍:
bash
pnpm setup
你项目现在用的是 pnpm 几?最期待 SQLite 加速还是全局隔离?评论区说一句
各位互联网搭子,要是这篇文章成功引起了你的注意,别犹豫,关注、点赞、评论、分享走一波,让我们把这份默契延续下去,一起在知识的海洋里乘风破浪!