NestJS v12大版本更新前瞻

0 阅读2分钟

本次更新约在2026年第三季度,主要围绕一下几点更新:

  • 原生 ESM 支持
  • 使用 Vitest + SWC(ESM 项目默认)更快测试
  • 路由装饰器中的标准模式——使用 Zod、Valibot、ArkType 等
  • 全面重构NestJS官方网站

Snipaste_2026-02-26_13-45-40.png

概述:

  1. ESM迁移:

    • 所有NestJS包都将从CommonJS(CJS)过渡到ESM。目前核心、通用包已经迁移完成。
    • 现在NodeJS已经支持ESM,这应该不会给现有的项目带来重大性变更。
    • require(esm)的出现,是让迁移到ESM变得“现实可行”的关键因素,否则迁移就毫无意义。
  2. CLI

    • NestJS CLI会提示用户 选择生产CJS项目还是ESM项目
  3. 测试栈变更

    • 所有仓库和示例项目将从Jest迁移到Vitest(支持 TypeScript 装饰器时使用SWC)
    • 新的ESM默认使用Vitest
    • CJS项目将继续使用Jest
  4. 网站重构

    • NestJS 网站即将全面重新设计——我们将把它们提升到新高度。
  5. 破坏性变更

    • 一些NestJS软件包之间会有一些小的破坏性变化,但不会有重大变化
  6. 路由装饰器的Schema支持

    • 所有路由装饰器(如@Get、@Post等) 都将支持一个新的模式。该选项接受与标准模式兼容的对象
    • 使用现代验证库(如Zod、Valibot、ArkType等)来作为 class-validator的替代方案,
    • serializer interceptor 序列拦截器也将具备同样的能力。

总结

过去两年,很多团队的 NestJS 项目会同时踩到三类痛点:

  • 模块体系割裂:CJS 老项目跑得稳,但周边包越来越 ESM;新工具链又默认 ESM 思路。
  • 测试越来越慢:大项目 Jest 体系可控但性能与维护成本上升,尤其在 TS 装饰器/元数据场景下。
  • 校验/序列化口径不一致:接口参数校验、序列化转换各写各的,难以形成“统一 schema 语言”。

NestJS v12 的这次更新信号很明确:它不只是“加功能”,而是在为 ESM 迁移 与 下一代测试/构建工具链 铺路,同时把 schema 作为一等能力 往路由参数装饰器与序列化链路里塞。

重点提示:v12 这次更像“路线定型”——把 ESM、测试、schema 三件事放进同一条演进路径,而不是堆新特性。