Fork (diff)
which adds a --serviceTemplate
option. A variant of this fork is also in this pull request to the original upstream repo.
Can be used in another project by adding to package.json
:
"openapi-typescript-codegen": "https://github.com/DND-IT/openapi-typescript-codegen.git#master",
To update or modify this fork, check it out locally:
git clone git@github.com:DND-IT/openapi-typescript-codegen.git
cd openapi-typescript-codegen
git remote add upstream git@github.com:ferdikoomen/openapi-typescript-codegen.git
To pull in changes from original repo:
git fetch upstream
git rebase upstream/master master
npm ci
To build a new version and test it locally in disco project:
npm run release
cp dist/index.js ../disco/node_modules/openapi-typescript-codegen/dist/index.js`
To release a new version, run npm run release
and push everything, including the dist/index.js
file to GitHub. Then, in the project using it, delete the
openapi-typescript-codegen
entry in the package-lock.json
and run npm install
to install the new version.
Node.js library that generates Typescript clients based on the OpenAPI specification.
- Frontend ❤️ OpenAPI, but we do not want to use JAVA codegen in our builds
- Quick, lightweight, robust and framework-agnostic 🚀
- Supports generation of TypeScript clients
- Supports generations of Fetch, Node-Fetch, Axios, Angular and XHR http clients
- Supports OpenAPI specification v2.0 and v3.0
- Supports JSON and YAML files for input
- Supports generation through CLI, Node.js and NPX
- Supports tsc and @babel/plugin-transform-typescript
- Supports aborting of requests (cancelable promise pattern)
- Supports external references using json-schema-ref-parser
npm install openapi-typescript-codegen --save-dev
$ openapi --help
Usage: openapi [options]
Options:
-V, --version output the version number
-i, --input <value> OpenAPI specification, can be a path, url or string content (required)
-o, --output <value> Output directory (required)
-c, --client <value> HTTP client to generate [fetch, xhr, node, axios, angular] (default: "fetch")
--name <value> Custom client class name
--useOptions Use options instead of arguments
--useUnionTypes Use union types instead of enums
--exportCore <value> Write core files to disk (default: true)
--exportServices <value> Write services to disk (default: true)
--exportModels <value> Write models to disk (default: true)
--exportSchemas <value> Write schemas to disk (default: false)
--indent <value> Indentation options [4, 2, tab] (default: "4")
--postfixServices Service name postfix (default: "Service")
--postfixModels Model name postfix
--request <value> Path to custom request file
--serviceTemplate Path to custom service handlebars template to generate the service files
-h, --help display help for command
Examples
$ openapi --input ./spec.json --output ./generated
$ openapi --input ./spec.json --output ./generated --client xhr
- Basic usage
- OpenAPI object
- Client instances
--name
- Argument vs. Object style
--useOptions
- Enums vs. Union types
--useUnionTypes
- Runtime schemas
--exportSchemas
- Enum with custom names and descriptions
- Nullable props (OpenAPI v2)
- Authorization
- External references
- Canceling requests
- Custom request file