78 lines
2.2 KiB
TypeScript
78 lines
2.2 KiB
TypeScript
import { fileURLToPath, URL } from 'node:url'
|
||
|
||
import { defineConfig } from 'vite'
|
||
import vue from '@vitejs/plugin-vue'
|
||
import vueDevTools from 'vite-plugin-vue-devtools'
|
||
|
||
// auto import - 新增的自动导入插件导入
|
||
import AutoImport from 'unplugin-auto-import/vite'
|
||
import Components from 'unplugin-vue-components/vite'
|
||
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
|
||
import ElementPlus from 'unplugin-element-plus/vite'
|
||
import Icons from 'unplugin-icons/vite'
|
||
import IconsResolver from 'unplugin-icons/resolver'
|
||
|
||
// https://vite.dev/config/
|
||
export default defineConfig({
|
||
plugins: [
|
||
vue(),
|
||
vueDevTools(),
|
||
|
||
// Element Plus 样式按需导入
|
||
ElementPlus({
|
||
useSource: true
|
||
}),
|
||
// 自动导入 API
|
||
AutoImport({
|
||
// 自动导入Vue、VueRouter、Pinia、VueUse等核心API
|
||
imports: [
|
||
'vue',
|
||
'vue-router',
|
||
'pinia',
|
||
'@vueuse/core'
|
||
],
|
||
// 解析Element Plus和图标组件的API
|
||
resolvers: [
|
||
ElementPlusResolver(),
|
||
IconsResolver({
|
||
prefix: 'Icon'
|
||
})
|
||
],
|
||
// 生成类型声明文件,解决TS类型提示问题
|
||
dts: './src/auto-imports.d.ts',
|
||
// 生成eslint配置,解决自动导入的eslint报错
|
||
eslintrc: {
|
||
enabled: true,
|
||
filepath: './.eslintrc-auto-import.json'
|
||
}
|
||
}),
|
||
// 自动导入组件
|
||
Components({
|
||
// 自动导入自定义组件的目录
|
||
dirs: ['src/components'],
|
||
resolvers: [
|
||
// 自动导入Element Plus组件
|
||
ElementPlusResolver(),
|
||
// 自动导入图标组件
|
||
IconsResolver({
|
||
enabledCollections: ['ep'], // Element Plus图标集
|
||
prefix: 'Icon'
|
||
})
|
||
],
|
||
// 生成组件类型声明文件
|
||
dts: './src/components.d.ts'
|
||
}),
|
||
// 自动导入图标
|
||
Icons({
|
||
autoInstall: true, // 自动安装缺失的图标依赖
|
||
scale: 1, // 图标缩放比例
|
||
defaultClass: 'inline-block' // 图标默认样式
|
||
}),
|
||
// ========== 新增的自动导入配置结束 ==========
|
||
],
|
||
resolve: {
|
||
alias: {
|
||
'@': fileURLToPath(new URL('./src', import.meta.url))
|
||
},
|
||
},
|
||
}) |