找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

4738

积分

0

好友

616

主题
发表于 1 小时前 | 查看: 5| 回复: 0

前段时间,VS Code 刚刚切到 TypeScript 7

VS Code 1.119 中,微软已经开始使用 TypeScript 7 对 VS Code Core 和内置扩展做类型检查。

TypeScript 7 自己也完成了一次大换血:核心编译器从原来的 TypeScript / JavaScript 实现迁移到了 Go

TypeScript 7 基于 Go 原生编译器性能对比图

官方数据里,VS Code 的 Copilot 扩展类型检查时间甚至从 22 秒降到了 4 秒。

结果没过多久,另一边的 pnpm 也开始换底层了。

pnpm 官方推文宣布 v12 alpha 完全由 Rust 编写

而且这次更彻底:

pnpm 12 直接抛弃 TypeScript,用 Rust 重写。

pnpm 12,底层正式切 Rust

pnpm 官方最近发布了《What's different in pnpm 12》,开头第一句话就写得很直接:

pnpm 12 is a rewrite of pnpm in Rust.

pnpm 12 官方发布说明文章截图

也就是说,原本基于 TypeScript 实现的 pnpm CLI,正在整体迁移到 Rust

不过对开发者来说,这次升级没有刻意制造破坏性变化。常用的 installaddupdate、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/repogit+httpsgit+ssh 这类不同写法,现在会被解析成统一的依赖身份,最终走 HTTPS 还是 SSH,交给 Git 本身的配置决定。

这样一来,本地和 CI 的依赖解析结果会更加稳定。

全局 Node 也能跟着项目切版本

pnpm 12 还有一个很实用的新功能:Project-aware Global Bins。

假设你全局安装的是 Node 24,但某个项目通过 devEngines.runtime 指定了 Node 22

进入这个项目后执行:

node -v

pnpm 可以直接使用项目要求的 Node 版本;离开项目后,再恢复全局版本。

目前默认支持 Node.jsDenoBun

除此之外,还可以通过 globalShims 扩展到其他 CLI,比如 TypeScript。这样即使你全局安装的是 TypeScript 7,老项目里执行 tsc 时,也可以继续使用项目锁定的 TypeScript 5

这对多人协作和 CI 环境来说,非常实用。

pnpm 的边界又扩大了

pnpm 12 还有一个变化很有意思。

它开始真正识别 npmYarnBun 这些名字代表的是包管理器,不再只把它们当成 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




上一篇:npm 木马定向攻击阿里开发者,官方发布前新增人工审核
下一篇:Vivado仿真报错'arch_package' is not declared?调整Compile Order即可解决
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-8-28 03:17 , Processed in 1.012012 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表