17611538698
webmaster@21cto.com

JavaScript 安装程序 pnpm 被 Rust 重写

开源 0 43 19小时前
pnpm v12 Ships the Rust Rewrite | Dennis Morello

21CTO导读:pnpm 完全向后兼容的升级承诺为单体仓库管理员带来零摩擦的加速体验。

以下载速度快而闻名的流行 JavaScript 包管理器pnpm,已经完全用 Rust 重写,并称安装时间进一步缩短了高达 90%。

维护者还向开发者社区表示,最新发布的 pnpm 12 版本在升级过程中不应该引起恐慌。

pnpm 的现任首席维护者Zoltan Kochan这样写道: “升级不应该感觉像是一次迁移。pnpm 11 的命令、标志、设置和 lockfile 格式都得以保留,而且文档也涵盖了这两个版本。”

在项目自身的基准测试中,pnpm 12 安装一个未缓存的示例包仅需 5.19 秒,而 pnpm 11 需要 8.22 秒,npm 本身则需要 47.7 秒。

项目团队还用 Rust 构建了一个名为pnpr 的注册表服务,进一步提升了性能。在上述测试中,使用 pnpr 作为后端,安装过程仅耗时 3.37 秒。

自四月份开始开发以来,Rust 新核心二进制文件消除了许多因通过 Node.js 处理文件系统而产生的开销。根据 GitHub 的统计数据,这个新版本 65.9% 的代码是 Rust,33.5% 的代码是 TypeScript。 

“软件包安装主要包括获取元数据和 tar 包、解包文件、解析依赖关系图以及将软件包链接到 node_modules 中,这使得它成为原生代码和并行性的天然目标,”安全提供商 Socket 的通信副总裁 Sarah Gooding在一篇博客文章中写道。 

Kochan 还指出,该项目曾将 pnpm 与 Bun 和 Yarn 进行基准测试,但由于测试过程中出现问题,测试结果已被移除。尽管如此,她指出,在某些情况下,该软件可将安装时间缩短高达 90%。

更快速的 npm


开发者Rico Sta. Cruz 是在 2016 年创建了 pnpm,作为 npm(Node 包管理器)的更快替代方案。npm 是 JavaScript 的事实标准包管理器,开发者过去常常用它来查找和下载库和工具。


再到后来,GitHub于 2020 年收购了开源软件 npm 及其代码库


由于 Npm 会将所有需要的依赖下载到用户的计算机上,无论这些依赖项是否有重复,因此它以运行缓慢和占用大量磁盘空间而“闻名”。

pnpm 的秘诀在于内容寻址存储。如果您需要将同一个库用于 100 个不同的应用程序,pnpm 只会下载一次,并且仅当开发者指定不同的版本时才会下载另一个副本。

与 npm 类似,pnpm 也依赖于官方的 npm 仓库,但对许多用户来说,它的表现可能比 npm 更好。许多开发者也 喜欢 pnpm 使用 YAML 编写的 lockfile 文件,因为它更易于阅读,该文件描述了包的依赖关系树。

2025年 JavaScript 现状调查显示,pnpm 是迄今为止最流行的 JavaScript 单体仓库包管理器,其他热门包管理器还包括NxLernaYalcTurborepo,甚至 npm 内置的工作区。在接受调查的 10,251 位开发者中,约有 38%(3,840 位)使用 pnpm。

Rust 应用于 JavaScript


现在, 用 Rust 重写应用程序似乎成了一种时髦活动,这是因为该语言以速度快、不受垃圾回收机制影响而著称。

仅在 Web 应用生态系统中,Bun 框架就刚刚进行了 AI 驱动的 Rust改造,Tailwind CSS 版本 4获得了一个名为 Oxide 的新 Rust 引擎,而 Vite 框架现在由于一个名为Rolldown的 Rust 构建的 JavaScript 打包器而运行得更快。 

JavaScript 包管理平台提供商vlt的首席执行官 Darcy Clarke在一条 X 帖子中写道:“这在某种程度上是对 Node 开发者体验差的控诉”,他指的是 pnpm 的 Rust 重写。 

pnpm 的 Kochan回应说: “用 rust 重写 pnpm 比迁移到 esm(ECMAScript 模块)要快得多”, 他非常同意 Clarke 的观点。 

该软件的 GitHub 页面仍然指向最后一个主要版本 pnpm 11.25,因此现有用户必须更新到 v12 分支。只需要运行以下命令即可:

pnpm self-update next-12

作者:场长

评论

我要赞赏作者

请扫描二维码,使用微信支付哦。

分享到微信