Swagger-Codegen: как объединить все файлы в один файл для создания кода клиента

Я только что начал с Swagger и NodeJS. Я смог реализовать Swagger для моего приложения NodeExpress, а также смог сгенерировать typescript -клиент-код с помощью Swagger-Codegen (Typescript - Angular).

Одной из проблем, с которой я столкнулся, является сгенерированный код, поэтому он разложил много разных файлов. Я надеялся, что он выводит только один файл api.ts и содержит все от вызовов API и интерфейсов/моделей.

Я искал способ решить эту проблему, потому что трудно читать и поддерживать сгенерированный клиентский код по мере роста бэкэндса.

Любые предложения или указатели будут высоко оценены.

Счастливый праздник! Спасибо вам

EDIT: Я искал ответы на это в течение нескольких дней и до сих пор не нашел их. В настоящее время я работаю над проектом с ядром ASP.NET, и у них есть NSwag, который делает то, что я хочу достичь с помощью Node Swagger.

Ответ 1

TL; DR

Вы можете скомпилировать все файлы в один файл *.ts, как показано на этом сообщении.

Непрерывный интеграционный подход

Генератор кода Swagger упрощает обслуживание, потому что он позволяет думать в терминах непрерывной интеграции.

Вы не должны беспокоиться о просмотре кода или эстетике (потому что это код, сгенерированный машиной), но о:

  • Управление версиями API
  • Подписи функций, методов и классов
  • Документация

Если вы работаете с системой CI, такой как Jenkins или Ansible, вы можете автоматически развернуть библиотеку в частную учетную запись NPM (для JS и TS) или сервер Maven (для Java и Kotlin).

Частный Maven

Сохранение обновленного номера версии пакета позволит IDE правильно запросить пользователя об обновлениях API.

введите описание изображения здесь

Ответ 2

Swagger использует шаблоны Mustache для генерации кода. Для упрощения вы можете просто создать копию одного из встроенных шаблонов и измените это.

Затем вы можете использовать свой модифицированный шаблон следующим образом:

swagger-codegen-cli generate -t path/to/template/dir/ -i spec.json

Структура каталога вывода, однако, не может быть изменена с использованием шаблонов в одиночестве. Для этого вам понадобится собственный модуль codegen. Вы можете создать свой собственный или изменить один из встроенных.