前段时间,VS Code 刚刚切到 TypeScript 7。
在 VS Code 1.119 中,微软已经开始使用 TypeScript 7 对 VS Code Core 和内置扩展做类型检查。
而 TypeScript 7 自己也完成了一次大换血:核心编译器从原来的 TypeScript / JavaScript 实现迁移到了 Go。

官方数据里,VS Code 的 Copilot 扩展类型检查时间甚至从 22 秒降到了 4 秒。
结果没过多久,另一边的 pnpm 也开始换底层了。

而且这次更彻底:
pnpm 12 直接抛弃 TypeScript,用 Rust 重写。
pnpm 12,底层正式切 Rust
pnpm 官方最近发布了《What's different in pnpm 12》,开头第一句话就写得很直接:
pnpm 12 is a rewrite of pnpm in Rust.

也就是说,原本基于 TypeScript 实现的 pnpm CLI,正在整体迁移到 Rust。
不过对开发者来说,这次升级没有刻意制造破坏性变化。常用的 install、add、update、Workspace、Lockfile 等使用方式基本保持一致。
真正变化比较大的,主要集中在依赖解析、运行时管理和大型 Monorepo 性能。
Monorepo 性能明显提升
pnpm 12 重新处理了复杂依赖图中的循环依赖问题。
在循环依赖较多的 Workspace 中,官方数据显示:
Peer Dependency 解析速度提升 2 ~ 3 倍,内存占用降低约 25%,Lockfile 也会更小。
这类优化对普通小项目感知不一定明显,但对于大型 Monorepo、组件库仓库、拥有大量 Peer Dependencies 的项目,收益会更直接。
--resolution-only 被删除
如果准备升级 pnpm 12,有一个地方很容易踩坑。
以前 CI 中可能会使用:
pnpm install --resolution-only
到了 pnpm 12,这个参数已经被移除,继续使用会直接报错。
现在官方推荐使用:
pnpm peers check
它会直接读取 Lockfile 检查 Peer Dependency,不需要重新安装和解析依赖。
所以升级之前,建议先检查一下项目里的 CI 脚本。
Git 依赖解析更稳定
pnpm 支持直接安装 GitHub 等 Git 仓库里的依赖。
以前最大的坑之一,就是本地开发环境可能走 SSH,到了 CI 环境却因为没有配置 SSH Key 导致安装失败。
pnpm 12 调整了这套解析机制。
像 github:user/repo、git+https、git+ssh 这类不同写法,现在会被解析成统一的依赖身份,最终走 HTTPS 还是 SSH,交给 Git 本身的配置决定。
这样一来,本地和 CI 的依赖解析结果会更加稳定。
全局 Node 也能跟着项目切版本
pnpm 12 还有一个很实用的新功能:Project-aware Global Bins。
假设你全局安装的是 Node 24,但某个项目通过 devEngines.runtime 指定了 Node 22。
进入这个项目后执行:
node -v
pnpm 可以直接使用项目要求的 Node 版本;离开项目后,再恢复全局版本。
目前默认支持 Node.js、Deno 和 Bun。
除此之外,还可以通过 globalShims 扩展到其他 CLI,比如 TypeScript。这样即使你全局安装的是 TypeScript 7,老项目里执行 tsc 时,也可以继续使用项目锁定的 TypeScript 5。
这对多人协作和 CI 环境来说,非常实用。
pnpm 的边界又扩大了
pnpm 12 还有一个变化很有意思。
它开始真正识别 npm、Yarn、Bun 这些名字代表的是包管理器,不再只把它们当成 npm Registry 中的普通 Package。
同时还可以直接:
pnx node@22
运行指定版本的 Node。
可以看到,pnpm 现在管理的已经不只是依赖:
Package Manager、Runtime、Global Bin、Project Toolchain,都开始被纳入 pnpm 的控制范围。
写在最后
最近前端工具链的变化很有意思。
TypeScript 7:TypeScript → Go
pnpm 12:TypeScript → Rust
大型前端项目越来越复杂,Monorepo、依赖图、类型分析、工程索引以及 AI Coding 都在持续增加工具链压力。
所以现在越来越多基础设施开始把性能敏感的部分迁移到原生语言。
对于开发者来说,pnpm 12 最值得关注的也不只是“换成 Rust”。
更重要的是:它在保持原有使用习惯的同时,把依赖解析、运行时管理和大型 Workspace 性能重新做了一遍。
如果你本身就在维护大型 Monorepo,这一版确实值得关注。
相关链接:
https://pnpm.io/blog/whats-different-in-pnpm-12