本次更新约在2026年第三季度,主要围绕一下几点更新:
- 原生 ESM 支持
- 使用 Vitest + SWC(ESM 项目默认)更快测试
- 路由装饰器中的标准模式——使用 Zod、Valibot、ArkType 等
- 全面重构NestJS官方网站
概述:
-
ESM迁移:
- 所有NestJS包都将从CommonJS(CJS)过渡到ESM。目前核心、通用包已经迁移完成。
- 现在NodeJS已经支持ESM,这应该不会给现有的项目带来重大性变更。
- require(esm)的出现,是让迁移到ESM变得“现实可行”的关键因素,否则迁移就毫无意义。
-
CLI
- NestJS CLI会提示用户 选择生产CJS项目还是ESM项目
-
测试栈变更
- 所有仓库和示例项目将从Jest迁移到Vitest(支持 TypeScript 装饰器时使用SWC)
- 新的ESM默认使用Vitest
- CJS项目将继续使用Jest
-
网站重构
- NestJS 网站即将全面重新设计——我们将把它们提升到新高度。
-
破坏性变更
- 一些NestJS软件包之间会有一些小的破坏性变化,但不会有重大变化
-
路由装饰器的Schema支持
- 所有路由装饰器(如@Get、@Post等) 都将支持一个新的模式。该选项接受与标准模式兼容的对象
- 使用现代验证库(如Zod、Valibot、ArkType等)来作为 class-validator的替代方案,
- serializer interceptor 序列拦截器也将具备同样的能力。
总结
过去两年,很多团队的 NestJS 项目会同时踩到三类痛点:
- 模块体系割裂:CJS 老项目跑得稳,但周边包越来越 ESM;新工具链又默认 ESM 思路。
- 测试越来越慢:大项目 Jest 体系可控但性能与维护成本上升,尤其在 TS 装饰器/元数据场景下。
- 校验/序列化口径不一致:接口参数校验、序列化转换各写各的,难以形成“统一 schema 语言”。
NestJS v12 的这次更新信号很明确:它不只是“加功能”,而是在为 ESM 迁移 与 下一代测试/构建工具链 铺路,同时把 schema 作为一等能力 往路由参数装饰器与序列化链路里塞。
重点提示:v12 这次更像“路线定型”——把 ESM、测试、schema 三件事放进同一条演进路径,而不是堆新特性。