@preact/preset-vite
Version:
Preact preset for the vite bundler
84 lines (83 loc) • 2.76 kB
TypeScript
import type { Plugin } from "vite";
import type { FilterPattern } from "@rollup/pluginutils";
import type { ParserOptions } from "@babel/parser";
import type { TransformOptions } from "@babel/core";
export type BabelOptions = Omit<TransformOptions, "ast" | "filename" | "root" | "sourceFileName" | "sourceMaps" | "inputSourceMap">;
export interface PreactPluginOptions {
/**
* Inject devtools bridge in production bundle instead of only in development mode.
* @default false
*/
devtoolsInProd?: boolean;
/**
* Whether to use Preact devtools
* @default true
*/
devToolsEnabled?: boolean;
/**
* Whether to use prefresh HMR
* @default true
*/
prefreshEnabled?: boolean;
/**
* Whether to alias react, react-dom to preact/compat
* @default true
*/
reactAliasesEnabled?: boolean;
/**
* Prerender plugin options
*/
prerender?: {
/**
* Whether to prerender your app on build
*/
enabled: boolean;
/**
* Absolute path to script containing an exported `prerender()` function
*/
prerenderScript?: string;
/**
* Query selector for specifying where to insert prerender result in your HTML template
*/
renderTarget?: string;
/**
* Additional routes that should be prerendered
*/
additionalPrerenderRoutes?: string[];
/**
* Vite's preview server won't use our prerendered HTML by default, this middleware correct this
*/
previewMiddlewareEnabled?: boolean;
/**
* Path to use as a fallback/404 route, i.e., `/404` or `/not-found`
*/
previewMiddlewareFallback?: string;
};
/**
* RegExp or glob to match files to be transformed
*/
include?: FilterPattern;
/**
* RegExp or glob to match files to NOT be transformed
*/
exclude?: FilterPattern;
/**
* Babel configuration applied in both dev and prod.
*/
babel?: BabelOptions;
/**
* Import Source for jsx. Defaults to "preact".
*/
jsxImportSource?: string;
}
export interface PreactBabelOptions extends BabelOptions {
plugins: Extract<BabelOptions["plugins"], any[]>;
presets: Extract<BabelOptions["presets"], any[]>;
overrides: Extract<BabelOptions["overrides"], any[]>;
parserOpts: ParserOptions & {
plugins: Extract<ParserOptions["plugins"], any[]>;
};
}
declare function preactPlugin({ devtoolsInProd, devToolsEnabled, prefreshEnabled, reactAliasesEnabled, prerender, include, exclude, babel, jsxImportSource, }?: PreactPluginOptions): Plugin[];
export default preactPlugin;
export { preactPlugin as preact };