流行的 JavaScript 包管理器 pnpm 发布 12.0 版本,核心完全用 Rust 重写,安装速度最高提升 90%,且完全向后兼容。

pnpm 12 包管理器用 Rust 重写,安装速度提升最高 90%,前端开发工具资讯配图

pnpm 以快速下载著称。新版本 12 在项目基准测试中表现亮眼:安装一个未缓存的示例包,pnpm 12 耗时 5.19 秒,pnpm 11 为 8.22 秒,而官方 npm 需要 47.7 秒。如果搭配团队同步推出的 Rust 编写注册表服务器 pnpr,安装时间可进一步缩短到 3.37 秒。

项目维护者佐尔坦·科钦(Zoltan Kochan)强调,升级不需要“搬家”:“pnpm 11 的命令、标志、设置和 lockfile 格式全部沿用,文档同时覆盖两个版本。”也就是说,现有 monorepo 用户可以无感升级。

这次提速的关键,是用 Rust 重写了核心二进制。相关工作自今年 4 月启动,新版本代码约 65.9% 为 Rust、33.5% 为 TypeScript,大幅减少了此前通过 Node.js 转发文件系统操作的开销。安全公司 Socket 的传播副总裁莎拉·古丁(Sarah Gooding)分析称:包安装的耗时大头是获取元数据与压缩包、解包、解析依赖图以及把包链接进 node_modules,这天然适合原生代码与并行处理。

pnpm 由开发者 Rico Sta. Cruz 于 2016 年创建,初衷就是替代“又慢又占磁盘”的 npm——npm 会把所有依赖连同重复副本一起下载到用户机器上。pnpm 的秘诀是“内容寻址存储”:同一个库被 100 个应用使用时只下载一次,只有开发者指定不同版本时才重复下载。它同样从官方 npm 仓库拉取包,但用可读的 YAML lockfile 描述依赖树,对 monorepo 场景尤其友好。2025 年 JavaScript 生态调查显示,pnpm 已是 monorepo 开发者最常用的包管理器,约 38% 的受访者在使用。

用 Rust 重写应用是当下开发者社区的潮流——Rust 没有垃圾回收开销,性能出众。继 Bun 等一批项目之后,pnpm 又为“Rust 化”添了一个代表性案例。