NestJS 是一款使用 TypeScript 构建服务器端应用程序的渐进式 Node.js 框架。该项目发布了一份草案拉取请求,概述了即将于 2026 年第三季度初发布的大版本 v12.0.0 的更新范围。该版本的核心内容包括:所有官方包全面从 CommonJS 迁移至 ESM;路由装饰器原生支持 Standard Schema;现代化的默认工具链——用 Vitest 取代 Jest,用 oxlint 取代 ESLint,用 Rspack 取代 Webpack。
NestJS 12 的最大变化在于所有官方包都从 CommonJS 转换到了 ESM。框架创建者 Kamil Myśliwiec 指出,支持 Node.js require(esm) 是“向 ESM 迁移的最后一块拼图”,没有这一支持,“迁移就没有多大意义”。开发团队预计,这一变更对现有项目的影响将微乎其微,因为 Node.js 现在已经允许 CommonJS 代码通过 require() 加载 ESM 模块。更新后的 CLI 将提示开发者是生成 CJS 项目还是 ESM 项目,其中 ESM 项目默认支持 Vitest 和 oxlint。
随着向 ESM 的转换,NestJS 12 在所有路由装饰器(如 @Body、@Query 和 @Param)中引入了标准模式(Standard Schema)支持。这些装饰器将支持与标准模式规范兼容的新 schema 选项,使开发者能够直接使用 Zod、Valibot 和 ArkType 等现代验证库来替代 class-validator。该功能还扩展到了序列化拦截器。
测试和代码检查的默认设置也已经全面更新。所有 NestJS 存储库和示例项目均已经从 Jest 迁移至 Vitest,并借助 OXC 实现了对 TypeScript 装饰器的支持。新建的 ESM 项目将默认使用 Vitest,而 CJS 项目将继续使用 Jest。在代码检查方面,oxlint 取代 ESLint 成为所有项目的默认工具,这符合基于 Rust 的 JavaScript 工具提供更快的反馈循环这一普遍的趋势。在打包器方面,Webpack 已经被弃用,转而采用 Rspack,后者作为直接替代方案,构建速度显著提升。
本次发布还包括:微服务包的 NATS v3 迁移、Express 适配器的平滑关闭支持、WebSocket 断开连接原因参数、经过改进的管道 transform 类型安全性,以及 HttpExceptionOptions 的自定义 errorCode 选项。
在 X 平台上,NestJS 的官方公告获得了超过 800 个赞和 93 次转发,其中一位用户对支持 ESM表达了兴奋之情。一位 Reddit 用户指出:
我一直在使用 vitest 和 zod 搭配 Nest。这些工具将获得 Nest 的原生支持,真是个好消息。
在路线图讨论中,一些社区成员还建议将 Bun 和 Biome 添加到新项目的命令行选项中:
在创建新的 Nest.js 项目时,需要在命令行界面(CLI)中提供 bun 和 biome 两个可选项。
截至本文撰写之时,NestJS 文档网站已经提供了从 v10 到 v11 的迁移指南,开发团队建议使用 npm-check-updates 来简化包的升级流程。虽然还没有正式发布从 v11 到 v12 的迁移指南,但预计在正式稳定版发布之前,相关包将在 npm 标签 next 下发布,为开发团队提供在正式发布前进行测试的机会。
NestJS 是一个由 Kamil Myśliwiec 和 NestJS 核心团队维护的开源框架,采用 MIT 许可。它基于 Express 或 Fastify 构建,提供了一个可扩展的模块化架构,用于使用 TypeScript 构建可扩展的后端应用程序。该框架在 GitHub 上拥有超过 75000 个星标,并在企业级 Node.js 环境中被广泛采用。
原文链接:





