# Vite API

Every export of kitr/vite, with its signature.

Every export of `kitr/vite`, `kitr/vite/client`, read from the published type definitions. The [guide](/packages/vite) shows them in use.

## kitr/vite

### kitr

```ts
function kitr(options?: KitrPluginOptions): PluginOption[];
```

The kitr() Vite plugin. It reads `kitrrc.ts` and the installed packages' `vite` declarations
at build time and:
- wires TanStack Start (or the router plugin) and every plugin a package declares (React, Tailwind),
- exposes `virtual:kitr/providers` and `virtual:kitr/config` as static imports,
- pre-declares `optimizeDeps` from the packages' lists so dev start never rediscovers,
- sets the active platform's port, outDir and the `#app`-style aliases.

### readPrerender

```ts
function readPrerender(root: string, configDir: string): {
  pages?: Array<{
    path: string;
  }>;
  prerender?: Record<string, unknown>;
  sitemap?: Record<string, unknown>;
};
```

Static read of `config/seo.ts`: `prerender: ['/a']` or `{ routes: [...], crawlLinks }` becomes
Start's `pages` + `prerender`, and `site.url` turns on the sitemap. No execution needed.

### readRc

```ts
function readRc(root: string): RcInfo;
```

Static read of kitrrc.ts: `import('...')` specs under `providers:` and the `packages` list. No execution needed.

### readRcPlatforms

```ts
function readRcPlatforms(src: string): Record<string, RcPlatform>;
```

Static read of `platforms: { site: web({ mode: 'ssr' }) }`: names, factories and literal options.

### KitrPluginOptions

```ts
interface KitrPluginOptions {
  /** Project root. Default: Vite's root. */
  root?: string;
  /** Use TanStack Start (SSR, prerender, server functions). Default: when an installed package asks for it (`router` does). */
  start?: boolean | Record<string, unknown>;
  /**
   * Leave out the Vite plugin a package declares, by its short name: `{ tailwind: false }` skips
   * `@kitr/tailwind/vite`, `{ react: false }` skips `@vitejs/plugin-react`. Default: every declared plugin.
   */
  plugins?: Record<string, boolean>;
  /** Route files directory. Default `app/routes`. */
  routesDirectory?: string;
  generatedRouteTree?: string;
  /** Extra options for @tanstack/router-plugin. */
  router?: Record<string, unknown>;
  /** Include `@kitr/devtools/provider`. Default: never in production builds, always otherwise. */
  devtools?: boolean;
  /** Which platform from kitrrc.ts this build is for. Default: `KITR_PLATFORM` (set by `kitr dev|build <name>`), else the first web platform. */
  platform?: string;
  /**
   * Run `kitr types` when the build starts and again in dev whenever a watched file changes, so
   * `.kitr/` is always current. Needs `@kitr/cli` installed (it is, in every kitr project).
   * Default true.
   */
  types?: boolean;
}
```

<!-- GENERATED by scripts/api-docs.mjs from the type definitions. Do not edit. -->
