编程 NestJS v12 发布解读:ESM 就绪、Standard Schema 校验与全新 CLI

2026-09-09 08:32:44

NestJS v12 发布解读:ESM 就绪、Standard Schema 校验与全新 CLI

NestJS 于 2026 年 8 月 27 日发布 v12.0.0。v12 围绕四个方向:ESM-ready 包、一等公民的 Standard Schema 校验与序列化支持、重建的 CLI(含自动升级命令)、以及新的 @nestjs/observe 可观测性 SDK。现有 CommonJS 应用继续可用,迁移自己的代码到 ESM 完全可选。

核心变化

ESM 包:所有核心 Nest 包现在以 ESM 形式发布。借助现代 Node.js 的 require(esm),大部分既有 CommonJS 应用无需重写即可运行;但自定义启动脚本、构建工具和测试运行器若假设包是 CommonJS-only 需要检查。nest new 现在会询问创建 CommonJS 还是 ESM 项目。

Standard Schema 校验:路由参数装饰器 @Body()@Query()@Param()@RawBody() 新增 schema 选项,直接接受 Standard Schema 兼容库(Zod、Valibot、ArkType)的 schema:

@Post()
create(@Body({ schema: createUserSchema }) body: CreateUserDto) { ... }

@Get(':id')
findOne(@Param('id', { schema: z.coerce.number().int().positive() }) id: number) { ... }

重建的 CLI 与 nest upgrade:升级 CLI 后可用 nest upgrade 一键把全部 @nestjs/* 包升到 v12 兼容版本,并自动完成机械性迁移——nest-cli.json webpack 选项、GraphQL playgroundgraphiql 重命名与订阅传输切换、NATS 包替换、@nestjs/config 校验选项、Jest 与 Joi 升级等,结束后打印一份改动与待人工审查清单(可先 --dry-run 预览)。它刻意不迁移 ESM/Vitest/oxlint——这些是新项目默认,既有项目按自己的节奏采纳。

Node.js 版本要求:v12 要求 Node.js v20.19+ 或 v22.12+(包括 21.x 系列在内的旧版本上 nest upgrade 会拒绝执行)。

可观测性:新的 @nestjs/observe SDK 提供原生可观测性能力。

实践建议

  • 现有项目升级路径:npm i -g @nestjs/cli@latest → 项目根目录 nest upgrade(先 --dry-run 查看影响);
  • 新项目默认 ESM/Vitest/oxlint;团队是否跟随默认值建议在项目规范中明确;
  • 校验逻辑从 DTO class-validator 迁移到 Standard Schema 时,注意 @Param 的 coerce 行为(如上例 z.coerce.number())与原有全局 ValidationPipe 的兼容性。

来源:NestJS v12.0.0 Release迁移指南

复制全文 生成海报 NestJS Node.js TypeScript 后端框架

推荐文章

程序员茄子在线接单