import { ViteDevServer, Plugin } from 'vite'; import * as _compiler from 'vue/compiler-sfc'; import { SFCScriptCompileOptions, SFCTemplateCompileOptions, SFCStyleCompileOptions } from 'vue/compiler-sfc'; interface VueQuery { vue?: boolean; src?: string; type?: 'script' | 'template' | 'style' | 'custom'; index?: number; lang?: string; raw?: boolean; url?: boolean; scoped?: boolean; id?: string; } declare function parseVueRequest(id: string): { filename: string; query: VueQuery; }; interface Options { include?: string | RegExp | (string | RegExp)[]; exclude?: string | RegExp | (string | RegExp)[]; /** * In Vite, this option follows Vite's config. */ isProduction?: boolean; script?: Partial> & { /** * @deprecated defineModel is now a stable feature and always enabled if * using Vue 3.4 or above. */ defineModel?: boolean; /** * @deprecated moved to `features.propsDestructure`. */ propsDestructure?: boolean; }; template?: Partial>; style?: Partial>; /** * Use custom compiler-sfc instance. Can be used to force a specific version. */ compiler?: typeof _compiler; /** * Requires @vitejs/plugin-vue@^5.1.0 */ features?: { /** * Enable reactive destructure for `defineProps`. * - Available in Vue 3.4 and later. * - **default:** `false` in Vue 3.4 (**experimental**), `true` in Vue 3.5+ */ propsDestructure?: boolean; /** * Transform Vue SFCs into custom elements. * - `true`: all `*.vue` imports are converted into custom elements * - `string | RegExp`: matched files are converted into custom elements * - **default:** /\.ce\.vue$/ */ customElement?: boolean | string | RegExp | (string | RegExp)[]; /** * Set to `false` to disable Options API support and allow related code in * Vue core to be dropped via dead-code elimination in production builds, * resulting in smaller bundles. * - **default:** `true` */ optionsAPI?: boolean; /** * Set to `true` to enable devtools support in production builds. * Results in slightly larger bundles. * - **default:** `false` */ prodDevtools?: boolean; /** * Set to `true` to enable detailed information for hydration mismatch * errors in production builds. Results in slightly larger bundles. * - **default:** `false` */ prodHydrationMismatchDetails?: boolean; }; /** * @deprecated moved to `features.customElement`. */ customElement?: boolean | string | RegExp | (string | RegExp)[]; } interface ResolvedOptions extends Options { compiler: typeof _compiler; root: string; sourceMap: boolean; cssDevSourcemap: boolean; devServer?: ViteDevServer; devToolsEnabled?: boolean; } interface Api { get options(): ResolvedOptions; set options(value: ResolvedOptions); version: string; } declare function vuePlugin(rawOptions?: Options): Plugin; export { type Api, type Options, type ResolvedOptions, type VueQuery, vuePlugin as default, parseVueRequest };