import type { ComponentResolver } from 'unplugin-vue-components' import vue from '@vitejs/plugin-vue' import vueJsx from '@vitejs/plugin-vue-jsx' import Components from 'unplugin-vue-components/vite' import { defineConfig } from 'vite' /** * AoDesign Resolver * 自动支持前缀组件,如 */ export function AoDesignResolver(prefix = 'A'): ComponentResolver { return { type: 'component', resolve: (name: string) => { // 处理 PascalCase (AButton) const pascalName = name .split('-') .map(part => part.charAt(0).toUpperCase() + part.slice(1)) .join('') // 如果是 PascalCase,且以指定前缀开头,返回组件路径 if (pascalName.startsWith(prefix)) { const importName = pascalName.slice(prefix.length) const path = '@ao/ao-design' return { name: pascalName, importName, path } } return null }, } } export default defineConfig({ plugins: [ vue(), vueJsx(), Components({ resolvers: [AoDesignResolver('A')], // 前缀可自定义 dts: 'src/components.d.ts', // 自动生成 TS 类型声明 directoryAsNamespace: true, }), ], css: { preprocessorOptions: { scss: { // additionalData: `$prefix: 'abc';`, }, }, }, })