A Vite plugin that runs @developerehsan/api-client OpenAPI codegen automatically — a one-shot generate on vite build, and a background watcher during vite dev that regenerates your typed client whenever the spec changes. Because TanStack Start is Vite-based, this covers it too.
pnpm add -D @developerehsan/api-client-vite
# peer: vite >= 4 (optional — the plugin is structurally typed)Point it at your OpenAPI spec (a local path or an http(s) URL) and an output directory:
// vite.config.ts
import { defineConfig } from 'vite'
import { apiClientCodegen } from '@developerehsan/api-client-vite'
export default defineConfig({
plugins: [
apiClientCodegen({
input: './src/lib/api/openapi.json', // path or https URL
output: './src/lib/api/types/generated',
baseURL: 'https://api.example.com',
}),
],
})vite build→ runsgenerateonce so the generated types exist for the build.vite dev→ starts a watcher; editingopenapi.json(or polling a remote URL) regenerates the client on the fly.
If you have an api-client.config.{ts,mjs,js,json} (via defineCodegenConfig), call apiClientCodegen() with no arguments and it reads input/output/baseURL from there. Inline options override the config file.
apiClientCodegen() // reads api-client.config.*When input is a URL, the watcher does conditional (ETag/hash-aware) polling so an unchanged spec never triggers a regenerate. Any headers you set (e.g. an auth token) are sent with the fetch and are never logged or written into generated output.
The same artifacts as the CLI: api.types.ts (the OperationsMap type), api.modules.ts (the generatedModules descriptor), api.rpc.ts (paths-stripped descriptor for the SSR bridge), api.schema.hash, and api.schema.meta.json.
See the main package README for wiring the generated output into a client, the codegen docs page, and the examples/react-vite app for a working setup.
MIT