Generar contratos desde Swagger
Descripción del cliente generate-dto
Para la facilidad de generación de contratos se ha visto la necesidad de escribir un pequeño CLI en node ubicado en packages/generate-dto
josenapa@MacBook-Pro-de-Jose-oxxo app % yarn run generate-dto
Usage: api-core <option>
Options:
--version Show version number [boolean]
--all Generate All DTOs [boolean]
--service-name Generate specific service DTO [string]
--env Services Environment [string] [required]
--output DTOs Output dir [string] [required]
--help Show help [boolean]
Párametros que recibe el comando
Parametro | Descripción | required |
---|---|---|
all | Permite generar todos los contratos de todos los servicios definidos en el archivo swagger-doc-list.json | No |
service-name | Permite generar todos los contratos de un solo servicio, importante que el servicio esté registrado dentro del archivo swagger-doc-list.json | No |
env | Define el environment desde donde se va extraer la información de los contratos, puede ser dev o qa | Si |
output | Define el directorio donde se van a escribir los archivos .d.ts generados de los contratos | Si |
Generación de contratos
Para la generación de contratos, se han incluido 4 scripts dentro del package.json
"api:generate": "generate-dto --env=dev --output=./src/api/models --all && prettier --write src/api/models",
"api:generate:qa": "generate-dto --env=qa --output=./src/api/models --all && prettier --write src/api/models",
"api:generate:single": "generate-dto --env=dev --output=./src/api/models $0 && prettier --write src/api/models",
"api:generate:single:qa": "generate-dto --env=qa --output=./src/api/models $0 && prettier --write src/api/models",
Comando | Descripción |
---|---|
| este comando genera por defecto todos los contratos de todos los servicios publicados en dev |
| este comando genera por defecto todos los contratos de todos los servicios publicados en qa |
| este comando genera por defecto todos los contratos de un servicio en especifico de dev |
| este contrato genera por defecto todos los contratos de un servicio en especifico de qa |
Ejemplos
Generar todos los contratos de dev
yarn run api:generate
Generar todos los contratos de qa
Generar todos los contratos de un servicio especifico de dev
Generar todos los contratos de un servicio especifico de QA
Agregar nuevos servicios para generar contratos
Cuando backend agrega un nuevo bloque de servicios, debemos registrarlo en el archivo swagger-doc-list.json ubicado en packages/generate-dto/src/data. Posterior al registro del nuevo servicio, se deben ejecutar los comandos para generar los DTOs.