Configuration ​
openapi-ts
supports loading configuration from any file inside your project root directory supported by jiti loader. Below are the most common file formats.
import { defineConfig } from '@hey-api/openapi-ts'
export default defineConfig({
input: 'path/to/openapi.json',
output: 'src/client',
})
/** @type {import('@hey-api/openapi-ts').UserConfig} */
module.exports = {
input: 'path/to/openapi.json',
output: 'src/client',
}
/** @type {import('@hey-api/openapi-ts').UserConfig} */
export default {
input: 'path/to/openapi.json',
output: 'src/client',
}
Alternatively, you can use openapi-ts.config.js
and configure the export statement depending on your project setup.
Clients ​
By default, openapi-ts
will try to guess your client based on your project dependencies. If we don't get it right, you can specify the desired client
export default {
client: 'fetch',
input: 'path/to/openapi.json',
output: 'src/client',
}
export default {
client: 'axios',
input: 'path/to/openapi.json',
output: 'src/client',
}
export default {
client: 'angular',
input: 'path/to/openapi.json',
output: 'src/client',
}
export default {
client: 'node',
input: 'path/to/openapi.json',
output: 'src/client',
}
export default {
client: 'xhr',
input: 'path/to/openapi.json',
output: 'src/client',
}
We support these clients:
We also support the legacy Node.js and XHR clients:
- node (using node-fetch)
- xhr
TIP
You might not need a node
client. Fetch API is experimental in Node.js v18 and stable in Node.js v21. We recommend upgrading to the latest Node.js version.
Formatting ​
By default, openapi-ts
will automatically format your client according to your project configuration. To disable automatic formatting, set format
to false
export default {
format: false,
input: 'path/to/openapi.json',
output: 'src/client',
}
You can also prevent your client from being processed by formatters by adding your output path to the tool's ignore file (e.g. .prettierignore
).
Linting ​
For performance reasons, openapi-ts
does not automatically lint your client. To enable this feature, set lint
to true
export default {
input: 'path/to/openapi.json',
lint: true,
output: 'src/client',
}
You can also prevent your client from being processed by linters by adding your output path to the tool's ignore file (e.g. .eslintignore
).
Enums ​
If you need to iterate through possible field values without manually typing arrays, you can export enums with
export default {
enums: 'javascript',
input: 'path/to/openapi.json',
output: 'src/client',
}
This will export enums as plain JavaScript objects. For example, Foo
would become
export const FooEnum = {
FOO: 'foo',
BAR: 'bar',
} as const;
We discourage generating TypeScript enums because they are not standard JavaScript and pose typing challenges. If you really need TypeScript enums, you can export them with
export default {
enums: 'typescript',
input: 'path/to/openapi.json',
output: 'src/client',
}
Config API ​
You can view the complete list of options in the UserConfig interface.