Output ​
Learn about files generated with @hey-api/openapi-ts
.
TIP
Your actual output depends on your Hey API configuration. It may contain a different number of files and their contents might differ.
Overview ​
If you use the default configuration, your project might look like this.
my-app/
├── node_modules/
├── src/
│ ├── client/
│ │ ├── client.gen.ts
│ │ ├── index.ts
│ │ ├── sdk.gen.ts
│ │ └── types.gen.ts
│ └── index.ts
└── package.json
Each file is an artifact generated by a Hey API plugin. This is the default output, we will cover customizing it in this section. These files also form the base for third-party plugins.
Let's go through each file in the src/client
folder and explain what it looks like, what it does, and how to use it.
Index ​
index.ts
is the only file not generated by a specific plugin. It's meant for convenience and by default, it re-exports every artifact generated by default plugins (TypeScript and SDK).
export * from './sdk.gen';
export * from './types.gen';
Disable index file ​
We recommend importing artifacts from their respective files to avoid ambiguity, but we leave this choice up to you.
import type { Pet } from './client';
// or
import type { Pet } from './client/types.gen';
If you're not importing artifacts from the index file, you can skip generating it altogether by setting the output.indexFile
option to false
.
import { defaultPlugins } from '@hey-api/openapi-ts';
export default {
input: 'path/to/openapi.json',
output: {
indexFile: false,
path: 'src/client',
},
plugins: ['@hey-api/client-fetch'],
};
Re-export more files ​
You can choose which files should be re-exported by setting the exportFromIndex
option to true
on any plugin. For example, here's how you would re-export Zod plugin exports.
import { defaultPlugins } from '@hey-api/openapi-ts';
export default {
input: 'path/to/openapi.json',
output: 'src/client',
plugins: [
...defaultPlugins,
'@hey-api/client-fetch',
{
exportFromIndex: true,
name: 'zod',
},
],
};
WARNING
Re-exporting additional files from index file may result in broken output due to naming conflicts.
Client ​
client.gen.ts
is generated by client plugins. If you choose to generate SDKs (enabled by default), you must specify a client which will create this file.
import { createClient, createConfig } from '@hey-api/client-fetch';
export const client = createClient(createConfig());
The contents of this file are consumed by SDKs, but you can also import client
in your application to perform additional configuration or send manual requests.
Examples ​
You can view live examples on StackBlitz.
Sponsors ​
Love Hey API? Become our sponsor.