Modo strict & webpack

Duas configurações que definem o comportamento no boot: uma para CI, outra sobre uma limitação arquitetural.

strict: true

Passe { strict: true } em forRoot() para que a app lance no startup quando qualquer controller com @WithDocs() não tenha um companion file. Recomendado para CI, onde a falha rápida é preferível a um documento OpenAPI silenciosamente incompleto.

ts
DocfyModule.forRoot({ strict: true });

webpack: true

Limitação arquitetural

Se seu nest-cli.json tem "webpack": true em compilerOptions, o nestjs-docfy não vai funcionar, e não existe configuração que faça funcionar. Isso é arquitetural, não um bug a ser contornado, e tem duas causas:

Primeiro, o webpack agrupa cada módulo em um único arquivo de bundle e nunca popula o require.cache do Node com uma entrada por arquivo-fonte original, que é do que o mecanismo de discovery depende. Você verá Could not locate source file for X para cada controller com @WithDocs().

Segundo, mesmo contornando essa busca, existe uma segunda barreira inevitável: um docs file carregado via require() de fora do bundle cria um objeto de classe estruturalmente diferente daquele que a aplicação em execução de fato usa internamente. Decorar essa cópia isolada não tem nenhum efeito sobre o documento que SwaggerModule.createDocument() realmente serve, e isso acontece silenciosamente, sem erro.

Duas opções: