/// import { DotenvParseOutput } from 'dotenv'; import { Options as RollupPluginVueOptions } from 'rollup-plugin-vue'; import { CompilerOptions, SFCStyleCompileOptions, SFCAsyncStyleCompileOptions, SFCTemplateCompileOptions } from '@vue/compiler-sfc'; import { InputOptions as RollupInputOptions, OutputOptions as RollupOutputOptions, Plugin as RollupPlugin, OutputChunk } from 'rollup'; import { BuildPlugin } from './build'; import { Context, ServerPlugin } from './server'; import { Resolver } from './resolver'; import { Transform, CustomBlockTransform, IndexHtmlTransform } from './transform'; import { DepOptimizationOptions } from './optimizer'; import { ServerOptions } from 'https'; import { Options as RollupTerserOptions } from 'rollup-plugin-terser'; import { ProxiesOptions } from './server/serverPluginProxy'; export declare type PreprocessLang = NonNullable; export declare type PreprocessOptions = SFCStyleCompileOptions['preprocessOptions']; export declare type CssPreprocessOptions = Partial>; /** * https://github.com/koajs/cors#corsoptions */ export interface CorsOptions { /** * `Access-Control-Allow-Origin`, default is request Origin header */ origin?: string | ((ctx: Context) => string); /** * `Access-Control-Allow-Methods`, default is 'GET,HEAD,PUT,POST,DELETE,PATCH' */ allowMethods?: string | string[]; /** * `Access-Control-Expose-Headers` */ exposeHeaders?: string | string[]; /** * `Access-Control-Allow-Headers` */ allowHeaders?: string | string[]; /** * `Access-Control-Max-Age` in seconds */ maxAge?: string | number; /** * `Access-Control-Allow-Credentials`, default is false */ credentials?: boolean | ((ctx: Context) => boolean); /** * Add set headers to `err.header` if an error is thrown */ keepHeadersOnError?: boolean; } export { Resolver, Transform }; /** * Options shared between server and build. */ export interface SharedConfig { /** * Project root directory. Can be an absolute path, or a path relative from * the location of the config file itself. * @default process.cwd() */ root?: string; /** * Import alias. The entries can either be exact request -> request mappings * (exact, no wildcard syntax), or request path -> fs directory mappings. * When using directory mappings, the key **must start and end with a slash**. * * Example `vite.config.js`: * ``` js * module.exports = { * alias: { * // alias package names * 'react': '@pika/react', * 'react-dom': '@pika/react-dom' * * // alias a path to a fs directory * // the key must start and end with a slash * '/@foo/': path.resolve(__dirname, 'some-special-dir') * } * } * ``` */ alias?: Record; /** * Function that tests a file path for inclusion as a static asset. */ assetsInclude?: (file: string) => boolean; /** * Custom file transforms. */ transforms?: Transform[]; /** * Custom index.html transforms. */ indexHtmlTransforms?: IndexHtmlTransform[]; /** * Define global variable replacements. * Entries will be defined on `window` during dev and replaced during build. */ define?: Record; /** * Resolvers to map dev server public path requests to/from file system paths, * and optionally map module ids to public path requests. */ resolvers?: Resolver[]; /** * Configure dep optimization behavior. * * Example `vite.config.js`: * ``` js * module.exports = { * optimizeDeps: { * exclude: ['dep-a', 'dep-b'] * } * } * ``` */ optimizeDeps?: DepOptimizationOptions; /** * Options to pass to `@vue/compiler-dom` * * https://github.com/vuejs/vue-next/blob/master/packages/compiler-core/src/options.ts */ vueCompilerOptions?: CompilerOptions; /** * Configure what tags/attributes to trasnform into asset url imports, * or disable the transform altogether with `false`. */ vueTransformAssetUrls?: SFCTemplateCompileOptions['transformAssetUrls']; /** * The options for template block preprocessor render. */ vueTemplatePreprocessOptions?: Record; /** * Transform functions for Vue custom blocks. * * Example `vue.config.js`: * ``` js * module.exports = { * vueCustomBlockTransforms: { * i18n: src => `export default Comp => { ... }` * } * } * ``` */ vueCustomBlockTransforms?: Record; /** * Configure what to use for jsx factory and fragment. * @default 'vue' */ jsx?: 'vue' | 'preact' | 'react' | { factory?: string; fragment?: string; }; /** * Environment mode */ mode?: string; /** * CSS preprocess options */ cssPreprocessOptions?: CssPreprocessOptions; /** * CSS modules options */ cssModuleOptions?: SFCAsyncStyleCompileOptions['modulesOptions']; /** * Enable esbuild * @default true */ enableEsbuild?: boolean; /** * Environment variables parsed from .env files * only ones starting with VITE_ are exposed on `import.meta.env` * @internal */ env?: DotenvParseOutput; } export interface HmrConfig { protocol?: string; hostname?: string; port?: number; path?: string; } export interface ServerConfig extends SharedConfig { /** * Configure hmr websocket connection. */ hmr?: HmrConfig | boolean; /** * Configure dev server hostname. */ hostname?: string; port?: number; open?: boolean; /** * Configure https. */ https?: boolean; httpsOptions?: ServerOptions; /** * Configure custom proxy rules for the dev server. Uses * [`koa-proxies`](https://github.com/vagusX/koa-proxies) which in turn uses * [`http-proxy`](https://github.com/http-party/node-http-proxy). Each key can * be a path Full options * [here](https://github.com/http-party/node-http-proxy#options). * * Example `vite.config.js`: * ``` js * module.exports = { * proxy: { * // string shorthand * '/foo': 'http://localhost:4567/foo', * // with options * '/api': { * target: 'http://jsonplaceholder.typicode.com', * changeOrigin: true, * rewrite: path => path.replace(/^\/api/, '') * } * } * } * ``` */ proxy?: Record; /** * Configure CORS for the dev server. * Uses [@koa/cors](https://github.com/koajs/cors). * Set to `true` to allow all methods from any origin, or configure separately * using an object. */ cors?: CorsOptions | boolean; /** * A plugin function that configures the dev server. Receives a server plugin * context object just like the internal server plugins. Can also be an array * of multiple server plugin functions. */ configureServer?: ServerPlugin | ServerPlugin[]; } export interface BuildConfig extends Required { /** * Entry. Use this to specify a js entry file in use cases where an * `index.html` does not exist (e.g. serving vite assets from a different host) * @default 'index.html' */ entry: string; /** * Base public path when served in production. * @default '/' */ base: string; /** * Directory relative from `root` where build output will be placed. If the * directory exists, it will be removed before the build. * @default 'dist' */ outDir: string; /** * Directory relative from `outDir` where the built js/css/image assets will * be placed. * @default '_assets' */ assetsDir: string; /** * Static asset files smaller than this number (in bytes) will be inlined as * base64 strings. Default limit is `4096` (4kb). Set to `0` to disable. * @default 4096 */ assetsInlineLimit: number; /** * Whether to code-split CSS. When enabled, CSS in async chunks will be * inlined as strings in the chunk and inserted via dynamically created * style tags when the chunk is loaded. * @default true */ cssCodeSplit: boolean; /** * Whether to generate sourcemap * @default false */ sourcemap: boolean | 'inline'; /** * Set to `false` to disable minification, or specify the minifier to use. * Available options are 'terser' or 'esbuild'. * @default 'terser' */ minify: boolean | 'terser' | 'esbuild'; /** * The option for `terser` */ terserOptions: RollupTerserOptions; /** * Transpile target for esbuild. * @default 'es2020' */ esbuildTarget: string; /** * Build for server-side rendering, only as a CLI flag * for programmatic usage, use `ssrBuild` directly. * @internal */ ssr?: boolean; /** * Will be passed to rollup.rollup() * * https://rollupjs.org/guide/en/#big-list-of-options */ rollupInputOptions: ViteRollupInputOptions; /** * Will be passed to bundle.generate() * * https://rollupjs.org/guide/en/#big-list-of-options */ rollupOutputOptions: RollupOutputOptions; /** * Will be passed to rollup-plugin-vue * * https://github.com/vuejs/rollup-plugin-vue/blob/next/src/index.ts */ rollupPluginVueOptions: Partial; /** * Will be passed to @rollup/plugin-node-resolve * https://github.com/rollup/plugins/tree/master/packages/node-resolve#dedupe */ rollupDedupe: string[]; /** * Whether to log asset info to console * @default false */ silent: boolean; /** * Whether to write bundle to disk * @default true */ write: boolean; /** * Whether to emit index.html * @default true */ emitIndex: boolean; /** * Whether to emit assets other than JavaScript * @default true */ emitAssets: boolean; /** * Whether to emit a manifest.json under assets dir to map hash-less filenames * to their hashed versions. Useful when you want to generate your own HTML * instead of using the one generated by Vite. * * Example: * * ```json * { * "main.js": "main.68fe3fad.js", * "style.css": "style.e6b63442.css" * } * ``` * @default false */ emitManifest?: boolean; /** * Predicate function that determines whether a link rel=modulepreload shall be * added to the index.html for the chunk passed in */ shouldPreload: ((chunk: OutputChunk) => boolean) | null; /** * Enable 'rollup-plugin-vue' * @default true */ enableRollupPluginVue?: boolean; /** * Plugin functions that mutate the Vite build config. The `builds` array can * be added to if the plugin wants to add another Rollup build that Vite writes * to disk. Return a function to gain access to each build's output. * @internal */ configureBuild?: BuildPlugin | BuildPlugin[]; } export interface ViteRollupInputOptions extends RollupInputOptions { /** * @deprecated use `pluginsPreBuild` or `pluginsPostBuild` instead */ plugins?: RollupPlugin[]; /** * Rollup plugins that passed before Vite's transform plugins */ pluginsPreBuild?: RollupPlugin[]; /** * Rollup plugins that passed after Vite's transform plugins */ pluginsPostBuild?: RollupPlugin[]; /** * Rollup plugins for optimizer */ pluginsOptimizer?: RollupPlugin[]; } export interface UserConfig extends Partial, ServerConfig { plugins?: Plugin[]; } export interface Plugin extends Pick { } export declare type ResolvedConfig = UserConfig & { /** * Path of config file. */ __path?: string; }; export declare function resolveConfig(mode: string, configPath?: string): Promise; export declare const defaultDefines: { __VUE_OPTIONS_API__: boolean; __VUE_PROD_DEVTOOLS__: boolean; };