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
yarn run api:generate:qa
Generar todos los contratos de un servicio especifico de dev
yarn run api:generate:single --service-name=transaction-service
Generar todos los contratos de un servicio especifico de QA
yarn run api:generate:single:qa --service-name=transaction-service
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.