用 @WithDocs() 标记控制器
标记出哪些控制器有 companion 文件,然后运行 generate。
标记你的控制器
users.controller.ts
// users.controller.ts
import { Controller, Get, Post, Body } from "@nestjs/common";
import { WithDocs } from "nestjs-docfy";
@WithDocs()
@Controller("users")
export class UsersController {
// route handlers only: no Swagger decorators here
}生成 companion 文件
运行 CLI 扫描你的项目,为每个控制器生成预填充好的 *.controller.docs.ts:
bash
npx nestjs-docfy generateCLI 仅使用静态分析(不执行任何代码),并自动识别你项目的结构:monorepo、Nx workspace 和 Nest CLI monorepo 都支持。
如果只想预览而不改动文件系统:
bash
npx nestjs-docfy generate --dry-run填写文档内容
生成的文件已经预填充了推断出的 summary、响应类型,以及常见的错误响应:
users.controller.docs.ts
// Generated by nestjs-docfy: edit freely, use --force to merge new methods
import { docs } from "nestjs-docfy";
import { ApiTags, ApiOperation, ApiResponse, ApiBody } from "@nestjs/swagger";
import { UsersController } from "./users.controller";
import { CreateUserDto } from "./dto/create-user.dto";
import { UserEntity } from "./entities/user.entity";
docs(UsersController, {
classDecorators: [ApiTags("users")],
methods: {
// GET / → async findAll(): Promise<UserEntity[]>
findAll: [
ApiOperation({ summary: "Find all" }),
ApiResponse({ status: 200, description: "OK", type: [UserEntity] }),
],
// POST / → async create(dto: CreateUserDto): Promise<UserEntity>
create: [
ApiOperation({ summary: "Create" }),
ApiBody({ type: CreateUserDto }),
ApiResponse({ status: 201, description: "Created", type: UserEntity }),
ApiResponse({ status: 400, description: "Bad Request" }),
],
},
});可以自由编辑这个文件:你的改动是安全的。再次运行 generate 会跳过已存在的文件。使用 --force 只合并进新增的方法,不会动已有的内容。