npm

Spec TypeScript code generation is packaged in form of npm package. Add following dependency to your project:

% npm install --dev specgen.io

The has specgen command line tool is built inside of the npm package.

Add the following script to package.json:

"specgen": "specgen <command>  <args>"

In this specgen script <command> stands for specific specgen tool command. Here are commands that generate TypeScript code: service-ts, client-ts, models-ts.

To run code generation execute specgen script:

% npm run specgen

This page provides some examples of specgen scripts configuration.

Express Service

The example below generates Express server with Superstruct models to ./src/spec and OpenAPI specification to ./docs/swagger.yaml. The command also scaffolds services (only if they don't exist yet) that should be implemented by developers and puts the code into ./src/services path.

"specgen": "specgen service-ts --server express --validation superstruct --spec-file ./spec.yaml --generate-path ./src/spec --swagger-path ./docs/swagger.yaml --services-path ./src/services"

Read service-ts documentation for command details.

Koa Service

The example below generates koa server with io-ts models to ./src/spec and OpenAPI specification to ./docs/swagger.yaml. The command also scaffolds services (only if they don't exist yet) that should be implemented by developers and puts the code into ./src/services path.

"specgen": "specgen service-ts --server koa --validation io-ts --spec-file ./spec.yaml --generate-path ./src/spec --swagger-path ./docs/swagger.yaml --services-path ./src/services"

Read service-ts documentation for command details.

Axios Client

The example below generates Axios HTTP client with Superstruct models from ./spec.yaml speicification and puts generated code to ./src/spec.

"specgen": "specgen client-ts --client axios --validation superstruct --spec-file ./spec.yaml --generate-path ./src/spec"

Read client-ts documentation for command details.

Superstruct Models

The example below generates Superstruct models from ./spec.yaml speicification and puts generated code to ./src/spec.

"specgen": "specgen models-ts --validation superstruct --spec-file ./spec.yaml --generate-path ./src/spec"

Read models-ts documentation for command details.

io-ts Models

The example below generates io-ts models from ./spec.yaml speicification and puts generated code to ./src/spec.

"specgen": "specgen models-ts --validation io-ts --spec-file ./spec.yaml --generate-path ./src/spec"

Read models-ts documentation for command details.

Last updated