| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410 |
- /// <reference types="node" />
- 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<SFCStyleCompileOptions['preprocessLang']>;
- export declare type PreprocessOptions = SFCStyleCompileOptions['preprocessOptions'];
- export declare type CssPreprocessOptions = Partial<Record<PreprocessLang, PreprocessOptions>>;
- /**
- * 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<string, string>;
- /**
- * 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<string, any>;
- /**
- * 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<string, SFCTemplateCompileOptions['preprocessOptions']>;
- /**
- * Transform functions for Vue custom blocks.
- *
- * Example `vue.config.js`:
- * ``` js
- * module.exports = {
- * vueCustomBlockTransforms: {
- * i18n: src => `export default Comp => { ... }`
- * }
- * }
- * ```
- */
- vueCustomBlockTransforms?: Record<string, CustomBlockTransform>;
- /**
- * 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<string, string | ProxiesOptions>;
- /**
- * 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<SharedConfig> {
- /**
- * 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<RollupPluginVueOptions>;
- /**
- * 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<BuildConfig>, ServerConfig {
- plugins?: Plugin[];
- }
- export interface Plugin extends Pick<UserConfig, 'alias' | 'transforms' | 'indexHtmlTransforms' | 'define' | 'resolvers' | 'configureBuild' | 'configureServer' | 'vueCompilerOptions' | 'vueTransformAssetUrls' | 'vueTemplatePreprocessOptions' | 'vueCustomBlockTransforms' | 'rollupInputOptions' | 'rollupOutputOptions' | 'enableRollupPluginVue'> {
- }
- export declare type ResolvedConfig = UserConfig & {
- /**
- * Path of config file.
- */
- __path?: string;
- };
- export declare function resolveConfig(mode: string, configPath?: string): Promise<ResolvedConfig | undefined>;
- export declare const defaultDefines: {
- __VUE_OPTIONS_API__: boolean;
- __VUE_PROD_DEVTOOLS__: boolean;
- };
|