@plugin-light/project-config-vite
Version:
开箱即用的项目配置,适用于 Vue3.x 项目
98 lines (97 loc) • 2.63 kB
TypeScript
/// <reference types="node" />
import type { Plugin } from 'vite';
import type { IAddCodeAtEndOptions } from '@plugin-light/vite-plugin-add-code-at-end';
import type { IAliasForLibraryOptions } from '@plugin-light/vite-plugin-alias-for-library';
import type { Server } from 'node:https';
import type { ElementPlusResolverOptions, TDesignResolverOptions, VantResolverOptions } from 'unplugin-vue-components/resolvers';
import type { MkcertPluginOptions } from 'vite-plugin-mkcert';
export type GetViteConfigOptions = {
/**
* 模式,对应 Vite 中 defineConfig 的 mode 参数
*/
mode: string;
/**
* 本地开发端口
*
* 不传会取 process.env.VUE_APP_PORT,或 443
*/
serverPort?: number;
/**
* 本地开发是否是 https
*/
serverHttps?: Server;
/**
* 传给 server.host
*
* 参考 https://cn.vitejs.dev/config/server-options.html#server-host
*/
serverHost?: string | boolean;
/**
* 对应 optimizeDeps.include
*/
optimizeDepsIncludes?: Array<string>;
/**
* 对应 optimizeDeps.exclude
*/
optimizeDepsExcludes?: Array<string>;
/**
* add-code-at-end 插件参数
*/
addCodeAtEndOptions?: IAddCodeAtEndOptions | boolean;
/**
* press-ui 本地的 alias 配置
* @default 'src/library/press-ui'
*/
pressUiAlias?: string;
/**
* press-plus 本地的 alias 配置
* @default 'src/library/press-plus'
*/
pressPlusAlias?: string;
/**
* alias-for-library 插件参数
*/
aliasForLibraryOptions?: IAliasForLibraryOptions;
/**
* pmd-tools 之类的别名映射
*/
pmdAliasMap?: Record<string, string>;
customElements?: Array<string>;
/**
* 三方库是否使用 cdn 链接,比如 vue,vue-router
* @default false
*/
useCdn?: boolean;
/**
* 是否使用 element-plus 的 cdn
* @default false
*/
useElementPlusCDN?: boolean;
/**
* vite-plugin-mkcert 参数
*/
mkcertOptions?: boolean | MkcertPluginOptions;
/**
* 前置插件
*/
prePlugins?: Array<Plugin>;
/**
* 后置插件
*/
postPlugins?: Array<Plugin>;
/**
* 自动导入 vant
* @default true
*/
autoImportVant?: boolean | VantResolverOptions;
/**
* 自动导入 element-plus
* @default true
*/
autoImportElementPlus?: boolean | ElementPlusResolverOptions;
/**
* 自动导入 tdesign
* @default { library: 'vue-next' }
*/
autoImportTDesign?: boolean | TDesignResolverOptions;
};