40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
import type { ConfigEnv, PluginOption } from 'vite';
|
|
import path from 'node:path';
|
|
import vue from '@vitejs/plugin-vue';
|
|
import UnoCSS from 'unocss/vite';
|
|
import AutoImport from 'unplugin-auto-import/vite';
|
|
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';
|
|
import Components from 'unplugin-vue-components/vite';
|
|
import envTyped from 'vite-plugin-env-typed';
|
|
import createSvgIcon from './svg-icon';
|
|
|
|
const root = path.resolve(__dirname, '../../');
|
|
|
|
function plugins({ mode, command }: ConfigEnv): PluginOption[] {
|
|
return [
|
|
UnoCSS(),
|
|
envTyped({
|
|
mode,
|
|
envDir: root,
|
|
envPrefix: 'VITE_',
|
|
filePath: path.join(root, 'types', 'import_meta.d.ts'),
|
|
}),
|
|
vue(),
|
|
AutoImport({
|
|
imports: ['vue'],
|
|
eslintrc: {
|
|
enabled: true,
|
|
},
|
|
resolvers: [ElementPlusResolver()],
|
|
dts: path.resolve(__dirname, './types/auto-imports.d.ts'),
|
|
}),
|
|
Components({
|
|
resolvers: [ElementPlusResolver()],
|
|
dts: path.resolve(__dirname, './types/components.d.ts'),
|
|
}),
|
|
createSvgIcon(command === 'build'),
|
|
];
|
|
}
|
|
|
|
export default plugins;
|