👇 今日要闻
打破信息壁垒,走近全球前端。Hello World 大家好,我是林语冰。
最近 Bun 效仿 Deno,要从 Zig 语言移植到 Rust "锈化"重写,源码 PR 已经合并了,正式官宣指日可待。
Deno 也不甘示弱,Deno 团队官宣 v2.8 正式发布,号称 Deno 进化史上最大的次版本升级,主要包括:
- Node 兼容性远超 Bun,测试率超过七成
- Deno CLI 新增命令,可以替换
pnpm install等 - 新增 JS Stage3
import defer导入延迟提案 - TS 更新到 v6 主版本,支持类型剥离

👉 Node 兼容性超过 Bun
之前 Deno 2.7 针对 Node 官方测试的通过率约为 42%,勉强超过了 Bun 1.3.14 的 40.6%。
Deno 2.8 更进一步,几乎涵盖了所有 node: 模块,测试率飙升到 76.4%,大幅领先 Bun,Deno 和 Bun 的"Rust 竞赛"预计会愈演愈烈。

👉 新增子命令
Deno CLI 新增了几个命令。
deno audit fix 能将漏洞模块升级到最新的补丁版,同时满足我们配置的主/次版本限制,任何需要升级主版本的模块都会单独列出,方便你决定升级与否。
deno bump-version 能更新 package.json 或 deno.json 中的 version 字段。它也适用于 workspace 工作区模式,在根目录运行能将更新应用到每个模块。

还有其他几个命令,我把它们浓缩为下列表格:
| 命令 | 作用 |
|---|---|
deno ci |
根据 lockfile 执行安装 |
deno pack |
约等于 tsc + npm pack |
deno transpile |
TSX 类型剥离,输出 JS |
deno why |
等价于 npm explain / pnpm why |
👉 包管理变更
Deno CLI 不再要求 deno add 和 deno install 命令添加 npm: 前缀,默认将无前缀的包名视为 npm 模块。

注意,CLI 中的 JSR 注册源仍需要 jsr: 前缀,ESM 模块中的 import 语句也要求 npm: 前缀。
这样,deno install 能取代 npm install 或 pnpm install 等命令,允许你使用 Deno 取代 npm 作为包管理器,但项目还是跑在 Node 上,既符合 Node 开发者的肌肉记忆,又提升了安装速度。
过去,monorepo 跨包共享依赖需要手动协调版本,当共享依赖更新时,每个模块的 package.json 必须同步更新。
Deno 2.8 采用 pnpm 的 catalog: 协议,这允许在 workspace 根目录中声明一个默认的 "catalog" 字段:

然后只需使用 catalog: 说明符,就能从任意工作区模块同步依赖版本:

此外,类似 pnpm 的模块隔离结构,Deno 默认的 node_modules 目录结构是隔离的,每个模块都有自己的符号链接解析树,因此它只能看到自己显式声明的依赖。
但一些旧工具仍然依赖 npm install 生成依赖提升的扁平目录结构,每个模块都位于 node_modules 顶层,并且可以 require() 它找到的任何依赖。
deno.json 新增了 nodeModulesLinker 字段,默认值是 "isolated"(隔离目录):

设置 "nodeModulesLinker": "hoisted",可以移植一个依赖 npm 扁平目录的现有 Node 项目。
还有,Deno 2.6 就新增了 min-release-age 最小发布时限配置,来拦截大多数供应链攻击。Deno 2.8 支持通过 .npmrc 配置:

👉 JS 新功能
Deno 支持 JS Stage3 的 import defer(延迟导入提案),模块能不运行其顶层代码加载,这样该模块只在首次访问其导出成员时才被执行。
举个栗子,模块先导入,但可以延迟执行:

这样,模块求值会延迟到访问导出成员的那个时间点。当模块求值成本高昂、但又不常使用时,import defer 新特性能缩短启动时间。
👉 TS 更新
TS 编译器更新到 v6.0.3 版本了,这是为了对齐 ts-go(TS 7.x) 的过渡版本,包括类型系统支持 ES2026 的最新功能等大量改动。
此外,deno check 默认包含 lib.node,不需要在 deno.json 中的 compilerOptions.lib 手动添加 "node" 了。

如上,Deno 自动支持 process / Buffer 等 Node 专属的全局变量和类型。lib.node 基于 @types/node 实现,Deno 会从 npm 拉取该模块,process.versions.node 匹配 Node 的主版本,目前是 v24.x。
如果你希望使用其他版本的 @types/node,比如仍在维护的更低版本 Node 22,可以在 package.json 中将其安装为开发依赖:

然后在 deno.json 中让 Deno 导入对应版本的模块:

👉 开发体验
Deno 2.8 支持让 Chrome DevTools(开发者工具)检查网络流量:
- 运行程序时添加
--inspect-wait等参数 - 在 Chromium 中打开
chrome://inspect - 点击 Deno 目标上的 Inspect(检查)

开发者工具的"Network"网络选项卡会显示客户端请求和响应头等所有内容:

相同的事件也会通过 node:inspector 客户端和 VS Code 的 JavaScript 调试器等工具显示出来。
此外,Deno 2.8 上线了一个与 Node --cpu-prof 匹配的内置 CPU 分析器,当程序退出时,Deno 会将 V8 的 CPU 分析结果写入磁盘。

.cpuprofile 文件可以在 Chrome DevTools 中直接打开,也可以输出为另外两种格式:
--cpu-prof-flamegraph会生成一个独立的交互式 SVG 图片,可以在浏览器中打开--cpu-prof-md会生成一份人类可读的 Markdown 报告,包含最热门的函数等详细信息

👇 重点总结
Deno 2.8 是 Deno 进化史上最大的次版本升级,主要包括:
- Deno CLI 新增了若干命令,Node 兼容性远超 Bun
- 新增 JS Stage3 的
import defer延迟导入提案 - 包管理器对齐 npm 行为,支持模块提升的扁平化目录
- TS 更新到 v6 主版本,支持类型剥离和 Node 专属类型
除此之外,Deno 官方博客还展示了 Deno 2.8 的性能提升,Web API 新功能等,更多技术细节另请参阅官方博客。
以上就是今日《前端快讯》的全部内容了,希望对你有所帮助。
👍 感谢大家按赞跟转发分享本文,你的手动支持是我坚持创作的不竭动力喔。
🙏 已经关注我的粉丝们,我们下期再见啦,掰掰~~

👇 参考文献:
- 🔗 Deno 2.8 官博 :deno.com/blog/v2.8
- 🔗 JS 延迟导入提案 :github.com/tc39/propos...
- 🔗 TS v6 官博 :devblogs.microsoft.com/typescript/...