Bien plus qu'une
doc Swagger.
nestjs-docfy sépare la documentation Swagger/OpenAPI de la logique des contrôleurs grâce à une convention de fichier compagnon, de la même façon que Nest le fait déjà avec *.controller.spec.ts.
npm install nestjs-docfy
# peer deps
npm install @nestjs/common @nestjs/swagger reflect-metadatadocfy-ui : une visionneuse de référence pensée pour l'IA
La spec OpenAPI que nestjs-docfy assemble est aussi ce que docfy-ui affiche, sans configuration séparée et avec la même source de vérité.
- Copy for AI : un résumé déterministe et prêt pour un LLM de l'endpoint, pas un dump JSON brut avec des $ref
- Recherche ⌘K sur tous les endpoints, instantanément
- Détail complet de requête/réponse par endpoint, généré directement depuis la spec






À quoi ça ressemble en pratique
Avant : un contrôleur noyé sous les décorateurs. Après : juste des routes, avec la documentation qui vit à côté, dans un fichier compagnon.
@WithDocs()
@Controller('users')
export class UsersController {
constructor(private readonly users: UsersService) {}
@Get(':id')
findOne(@Param('id') id: string) {
return this.users.findOne(id);
}
}import { docs } from 'nestjs-docfy';
import { ApiTags, ApiOperation, ApiResponse } from '@nestjs/swagger';
import { UsersController } from './users.controller';
docs(UsersController, {
classDecorators: [ApiTags('users')],
methods: {
findOne: [
ApiOperation({ summary: 'Get user by id' }),
ApiResponse({ status: 200, description: 'OK', type: UserDto }),
ApiResponse({ status: 404, description: 'User not found' }),
],
},
});Aucun monkey-patching, aucun proxy runtime
Juste le bon timing et les métadonnées Reflect.
Écris le fichier compagnon
users.controller.docs.ts appelle docs(UsersController, { ... }), de simples décorateurs Swagger, juste dans un autre fichier.
Découvert au démarrage
DocfyModule.forRoot() le trouve grâce à la convention de nommage et écrit les métadonnées Reflect sur les méthodes du contrôleur, avant que SwaggerModule.createDocument() s'exécute.
Sortie OpenAPI identique
SwaggerModule voit exactement les mêmes métadonnées que si les décorateurs avaient été écrits en ligne sur le contrôleur.