patch-spec: ręczna alternatywa dla webpack: true

Jeśli wolisz nie dodawać pluginu kompilatora, aplikuj pliki docs w czasie builda ręcznie.

Preferuj plugin CLI, chyba że masz powód, by tego nie robić

The CLI plugin robi to samo automatycznie, przy każdym buildzie. Użyj patch-spec (poniżej) zamiast tego, jeśli wolisz nie dodawać pluginu kompilatora, na przykład pipeline builda inny niż Nest CLI, albo bardziej rygorystyczna polityka co do tego, co uruchamia się podczas kompilacji.

Dlaczego to konieczne

Z "webpack": true w nest-cli.json (udokumentowanym ustawieniem domyślnym dla monorepo z wieloma aplikacjami) runtime'owe wykrywanie DocfyModule nie działa: webpack łączy wszystko w jeden bundle i nigdy nie wypełnia require.cache jednym wpisem na oryginalny plik źródłowy, na czym to wykrywanie się opiera. To ograniczenie architektoniczne, nie błąd do naprawienia. Zobacz strict mode & webpack.

Pipeline

bash
# 1. Uruchom aplikację tylko po to, by uzyskać żywy /api-json
node dist/main.js &

# 2. Wygeneruj dokument OpenAPI z już zaaplikowanymi plikami docs
npx nestjs-docfy patch-spec --spec http://localhost:3000/api-json --out openapi.patched.json

# 3. Serwuj załatany dokument przez DocfyUiModule
#    DocfyUiModule.setup('/docs', app, { staticSpecPath: './openapi.patched.json' });

Wywołaj DocfyUiModule.setup() przed SwaggerModule.setup(), aby statyczny /api-json miał pierwszeństwo przed żywym.