UNPKG

@tanstack/router-plugin

Version:

Modern and scalable routing for React applications

80 lines (70 loc) 2.16 kB
import { createVitePlugin } from 'unplugin' import { configSchema, getConfig } from './core/config' import { createRouterCodeSplitterPlugin } from './core/router-code-splitter-plugin' import { createRouterGeneratorPlugin } from './core/router-generator-plugin' import { unpluginRouterComposedFactory } from './core/router-composed-plugin' import { createRouterPluginContext } from './core/router-plugin-context' import type { CodeSplittingOptions, Config } from './core/config' import type { RouterPluginContext } from './core/router-plugin-context' type RouterPluginOptions = Partial<Config | (() => Config)> | undefined const defaultRouterPluginContext = createRouterPluginContext() /** * @example * ```ts * export default defineConfig({ * plugins: [tanstackRouterGenerator()], * // ... * }) * ``` */ const tanstackRouterGenerator = ( options?: RouterPluginOptions, routerPluginContext?: RouterPluginContext, ) => { const pluginContext = routerPluginContext ?? defaultRouterPluginContext return createVitePlugin((pluginOptions: RouterPluginOptions) => createRouterGeneratorPlugin(pluginOptions, pluginContext), )(options) } /** * @example * ```ts * export default defineConfig({ * plugins: [tanStackRouterCodeSplitter()], * // ... * }) * ``` */ const tanStackRouterCodeSplitter = ( options?: RouterPluginOptions, routerPluginContext?: RouterPluginContext, ) => { const pluginContext = routerPluginContext ?? defaultRouterPluginContext return createVitePlugin((pluginOptions: RouterPluginOptions) => createRouterCodeSplitterPlugin(pluginOptions, pluginContext), )(options) } /** * @example * ```ts * export default defineConfig({ * plugins: [tanstackRouter()], * // ... * }) * ``` */ const tanstackRouter = createVitePlugin(unpluginRouterComposedFactory) /** * @deprecated Use `tanstackRouter` instead. */ const TanStackRouterVite = tanstackRouter export default tanstackRouter export { configSchema, getConfig, tanStackRouterCodeSplitter, tanstackRouterGenerator, TanStackRouterVite, tanstackRouter, } export type { Config, CodeSplittingOptions, RouterPluginContext }