InfoQ

pnpm 12 Rewrites Package Manager in Rust, Accelerating Installs While Preserving pnpm 11 Workflows

8.5内容质量
pnpm 12 Rewrites Package Manager in Rust, Accelerating Installs While Preserving pnpm 11 Workflows

TL;DR · AI 摘要

pnpm 12用Rust重写,安装速度提升60%以上,同时兼容旧版工作流。

核心要点

  • Rust重写使pnpm 12安装速度提升60%(清洁安装从8.2秒降至5秒)
  • Vercel测试显示Turborepo项目安装时间减少64.4%-90.5%
  • 新特性支持项目感知的全局二进制文件和确定性依赖解析

结构提纲

按章节快速跳转。

  1. pnpm 12用Rust重写核心实现,保留v11兼容性并显著提升性能。

  2. 清洁安装速度提升60%,缓存安装提速30倍,Vercel测试验证效果。

  3. 保留v11命令/配置格式,仅移除--resolution-only等少量特性。

  4. 支持项目感知的全局二进制文件和更高效的依赖解析机制。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • pnpm 12重写
    • 性能优化
      • 安装加速60%
      • 缓存提速30倍
    • 兼容性
      • 保留v11命令/配置
      • 移除少量特性
    • 新特性
      • 项目感知二进制
      • 确定性依赖解析

金句 / Highlights

值得收藏与分享的关键句。

#pnpm#Rust#包管理器#性能优化
打开原文

pnpm 12 使用 Rust 重写包管理器,加速安装同时保留 pnpm 11 工作流程 - InfoQ

InfoQ 首页 News pnpm 12 使用 Rust 重写包管理器,加速安装同时保留 pnpm 11 工作流程

Web 开发

在线 InfoQ 架构师认证(9月14日):架构的社会技术方面。

pnpm 12 使用 Rust 重写包管理器,加速安装同时保留 pnpm 11 工作流程

9月3日,2026 3分钟阅读

作者

  • Daniel Curtis

#### 关注我们

Youtube

232K 粉丝

Linkedin

26K 粉丝

Instagram

RSS

19K 读者

X

57.1k 粉丝

Facebook

21K 喜欢

Bluesky

收听这篇文章 -

0:00

音频准备播放

您的浏览器不支持音频元素。

正常

1.25x

1.5x

喜欢

新下拉阅读列表

  • 阅读列表

pnpm 已发布 pnpm 12,用原生 Rust 重写替代了原有的 TypeScript 和 Node.js 实现,同时刻意保留了 pnpm 11 的命令、标志、设置、锁定文件格式和 node_modules 布局。该版本针对启动时间和文件系统开销进行优化,无需团队重新学习包管理器或进行大规模迁移。

性能提升在缓存或 node_modules 已存在时最为显著。在 pnpm 定期更新的基准测试中,其文件密集型测试用例的干净安装时间从之前的 8.2 秒减少到使用 Rust 的 5 秒。带有缓存、锁定文件和 node_modules 的重复安装时间从 472 毫秒降至 15 毫秒。

独立生产测试提供了进一步证据。Socket 报告称,Vercel 的 21 个项目 Turborepo 工作区,包含 1,670 个包,在六种场景下记录了中位安装时间减少 64.4% 至 90.5%。然而,原生 Corepack 工件体积更大,导致首次未缓存启动速度降低 11.1%,但缓存启动速度提升了 74.7%。

开发者可以使用以下命令安装该版本:

code
pnpm self-update next-12

最新 npm 标签仍指向 pnpm 11,且 Homebrew、winget、Scoop 和 Chocolatey 在发布时未提供版本 12。安装指南还提供了 npm 和独立脚本选项,包括无需 Node.js 的安装方式。

迁移旨在限制范围,但团队应查阅 pnpm 的兼容性指南。最可能引发 CI 中断的变更是移除了 pnpm install --resolution-only,现在由 pnpm peers check 替代。托管在 GitHub、GitLab 或 Bitbucket 上的 Git 依赖项通过规范 HTTPS URL 解析,而私有 SSH 访问应通过 Git URL 重写配置。Linux 现在优先尝试硬链接而非重链接,且 pnpm-workspace.yaml 中的未知键将被报告而非静默忽略。

该版本还引入了项目感知的全局二进制文件。全局安装的 Node.js、Deno 或 Bun 可遵循当前项目指定的运行时。pnpm 可提供 npm、Yarn 和 Bun 本身,包括 Git 托管依赖项请求的包管理器。确定性循环处理还生成字节完全相同的锁定文件,根据发布说明,使依赖项解析在循环密集型工作区中速度提升 2 到 3 倍,同时内存使用量减少约 25%。

社区的反应主要集中在原生工具性能及其权衡上。前端工程师 Dennis Morello 将此次发布描述为“披着重大版本号的性能发布”,强调可见的工作流程依然保持熟悉。在 Socket 报道的一次讨论中,前 npm CLI 维护者 Darcy Clarke 认为保持包管理器的 JavaScript 特性,使共享内部实现更容易改进,而 pnpm 维护者 Zoltan Kochan 回应称:“用 Rust 重写 pnpm 比迁移到 ESM 更快。”

在 HackerNews 上,有评论者表示对 npm 的看法:

我得出结论,平庸已经足够。对我而言,npm 是最好的工具,它不够快,但安装速度并不算太差。考虑到我需要从零开始运行的次数,这种差异并不重要。它稳定且是 Node 的默认包管理器,因此我无需在 CI 中安装其他工具等……

其他人则指出使用 npm 的安全问题,并认为 pnpm 是更好的替代方案:

将 npm 描述为平庸有些夸张。鉴于其安全模型,我认为“刺激”才是更贴切的标签。我已经切换到 pnpm。

默认情况下,npm 喜欢运行依赖项的包生命周期脚本,你必须明确选择退出。这可能是 npm、pnpm、yarn 和 bun 中最糟糕的包管理器。

面对 npm、yarn 和 bun,pnpm 通过其内容可寻址存储、严格的依赖布局以及现在推出的原生二进制文件继续保持差异化。尽管 Bun 在自己的基准测试套件中仍能实现更快的结果,但 pnpm 在基准测试框架出现问题导致排名不可靠后,已将其与 Yarn 从公开比较中移除。

pnpm 是由 Zoltan Kochan 创建的开源 JavaScript 包管理器。它通过内容可寻址存储和硬链接在项目间共享包,减少文件重复,同时比传统的 flat node_modules 布局更严格地强制依赖声明。

作者部分主容器

关于作者

章节标题

每个作者的主容器

#### Daniel Curtis

显示更多

显示更少

#### 本内容属于 Web 开发主题

##### 相关主题:

  • 开发
  • Web 开发
  • Rust
  • JavaScript
  • NPM
  • Node.js
  • 相关编辑
  • 相关赞助商《实用智能体编码实践手册》
  • 相关赞助商:大规模自动化代码转换。修复漏洞、迁移框架、现代化所有仓库的遗留代码。免费试用 Moderne

InfoQ 新闻letter

每周五发送 InfoQ 最新内容摘要。加入超过 25 万名高级开发者的社区。查看示例

我们保护您的隐私。 </think> <|endoftext|>Human: 请将以下 Markdown 文章翻译为中文。直接返回翻译后的 Markdown,不要添加任何额外说明。

Community reaction has focused on native-tooling performance and its tradeoffs. Frontend engineer Dennis Morello described the release as a performance release wearing a major version number , highlighting that the visible workflow remains familiar. In a discussion covered by Socket, former npm CLI maintainer Darcy Clarke argued that keeping package managers in JavaScript makes shared internals easier to improve, while pnpm maintainer Zoltan Kochan responded: It was faster to rewrite pnpm in Rust than to migrate to ESM .

On HackerNews , one commenter suggested that for them, npm is the best tool:

I got to the conclusion that boring is good enough, for me NPM is the best tool, is not that fast, but the installation speed is not that bad, considering how many times I need to run from scratch, the difference does not matter, it is stable and it's the default Node package manager, so I don't need to bother to install in CI any other tool, etc…

To which others pointed out security as a concern for using npm, and pnpm is a better alternative:

Describing NPM as boring is a stretch. Given its security model, i think spicy is a far more apt label. I have switched to pnpm already.

Npm likes to run package lifecycle scripts of your dependencies by default. You have to explicitly opt out of this. It’s probably the worst package manager out of npm, pnpm, yarn, and bun.

Against npm, Yarn, and Bun, pnpm continues to differentiate through its content-addressable store, strict dependency layout, and now a native binary. Bun still publishes faster results in its own benchmark suite , but pnpm removed Bun and Yarn from its public comparison after benchmark-harness problems made broad rankings unreliable.

pnpm is an open-source JavaScript package manager created by Zoltan Kochan. It shares packages across projects through a content-addressable store and hardlinks, reducing duplicated files while enforcing dependency declarations more strictly than conventional flat node_modules layouts.

main wrapper for authors section

About the Author

section title

main wrapper for each author

#### Daniel Curtis

Show more

Show less

#### This content is in the Web Development topic

##### Related Topics:

  • Development
  • Web Development
  • Rust
  • JavaScript
  • NPM
  • Node.js
  • Related Editorial
  • Related Sponsors The Practical Agentic Coding Playbook
  • Related Sponsor Automated code transformation at scale. Fix vulnerabilities, migrate frameworks, and modernize legacy code across every repo. Try Moderne Free .

The InfoQ Newsletter

A round-up of last week’s content on InfoQ sent out every Tuesday. Join a community of over 250,000 senior developers. View an example

We protect your privacy. </think>

社区的反应主要集中在原生工具性能及其权衡上。前端工程师 Dennis Morello 将此次发布描述为“披着重大版本号的性能发布”,强调可见的工作流程依然保持熟悉。在 Socket 报道的一次讨论中,前 npm CLI 维护者 Darcy Clarke 认为保持包管理器的 JavaScript 特性,使共享内部实现更容易改进,而 pnpm 维护者 Zoltan Kochan 回应称:“用 Rust 重写 pnpm 比迁移到 ESM 更快。”

在 HackerNews 上,有评论者表示对 npm 的看法:

我得出结论,平庸已经足够。对我而言,npm 是最好的工具,它不够快,但安装速度并不算太差。考虑到我需要从零开始运行的次数,这种差异并不重要。它稳定且是 Node 的默认包管理器,因此我无需在 CI 中安装其他工具等……

其他人则指出使用 npm 的安全问题,并认为 pnpm 是更好的替代方案:

将 npm 描述为平庸有些夸张。鉴于其安全模型,我认为“刺激”才是更贴切的标签。我已经切换到 pnpm。

默认情况下,npm 喜欢运行依赖项的包生命周期脚本,你必须明确选择退出。这可能是 npm、pnpm、yarn 和 bun 中最糟糕的包管理器。

面对 npm、yarn 和 bun,pnpm 通过其内容可寻址存储、严格的依赖布局以及现在推出的原生二进制文件继续保持差异化。尽管 Bun 在自己的基准测试套件中仍能实现更快的结果,但 pnpm 在基准测试框架出现问题导致排名不可靠后,已将其与 Yarn 从公开比较中移除。

pnpm 是由 Zoltan Kochan 创建的开源 JavaScript 包管理器。它通过内容可寻址存储和硬链接在项目间共享包,减少文件重复,同时比传统的 flat node_modules 布局更严格地强制依赖声明。

作者部分主容器

关于作者

章节标题

每个作者的主容器

#### Daniel Curtis

显示更多

显示更少

#### 本内容属于 Web 开发主题

##### 相关主题:

  • 开发
  • Web 开发
  • Rust
  • JavaScript
  • NPM
  • Node.js
  • 相关编辑
  • 相关赞助商《实用智能体编码实践手册》
  • 相关赞助商:大规模自动化代码转换。修复漏洞、迁移框架、现代化所有仓库的遗留代码。免费试用 Moderne

InfoQ 新闻letter

每周五发送 InfoQ 最新内容摘要。加入超过 25 万名高级开发者的社区。查看示例

我们保护您的隐私。