From 699b68990ece8f7686981603bb220a89862cfed6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=A5=E6=B5=A9?= Date: Sat, 25 Oct 2025 00:25:24 +0800 Subject: [PATCH] =?UTF-8?q?feat(vite-plugins):=20=E6=95=B4=E5=90=88?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=AF=BC=E5=85=A5=E4=B8=8E=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E8=A7=A3=E6=9E=90=E6=8F=92=E4=BB=B6=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vite-plugins/02.unplugin-auto-import.ts | 113 +++++++++++++++------ vite-plugins/02.unplugin-icons.ts | 17 ---- vite-plugins/02.unplugin-vue-components.ts | 36 ------- 3 files changed, 84 insertions(+), 82 deletions(-) delete mode 100644 vite-plugins/02.unplugin-icons.ts delete mode 100644 vite-plugins/02.unplugin-vue-components.ts diff --git a/vite-plugins/02.unplugin-auto-import.ts b/vite-plugins/02.unplugin-auto-import.ts index 905bad5..e609d63 100644 --- a/vite-plugins/02.unplugin-auto-import.ts +++ b/vite-plugins/02.unplugin-auto-import.ts @@ -1,31 +1,86 @@ -import type { PluginOption } from 'vite'; -import AutoImport from 'unplugin-auto-import/vite'; -import { createUtils4uAutoImports } from 'utils4u/auto-imports'; -import { VueRouterAutoImports } from 'unplugin-vue-router'; +import type { ConfigEnv, PluginOption } from 'vite'; -export default [ - // https://github.com/antfu/unplugin-auto-import - AutoImport({ - dirs: [ - // 'src/utils', - 'src/composables', - 'src/stores', - // 匹配所有 -auto-imports.ts / -auto-imports.tsx 结尾的文件 - 'src/**/*-auto-imports.{ts,tsx}', - ], - imports: [ - 'vue', - 'vue-i18n', - 'pinia', - '@vueuse/core', - VueRouterAutoImports, - createUtils4uAutoImports([]), - { - 'consola/browser': ['consola'], - 'vue-router/auto': ['useLink'], - 'naive-ui': ['useModal', 'useDialog', 'useMessage', 'useNotification', 'useLoadingBar'], +import AutoImport from 'unplugin-auto-import/vite'; +import Components from 'unplugin-vue-components/vite'; +import Icons from 'unplugin-icons/vite'; + +import { VueRouterAutoImports } from 'unplugin-vue-router'; +import { createUtils4uAutoImports } from 'utils4u/auto-imports'; + +import { FileSystemIconLoader } from 'unplugin-icons/loaders'; + +// >>>>> +import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers'; + +import { NaiveUiResolver } from 'unplugin-vue-components/resolvers'; + +import { TDesignResolver } from 'unplugin-vue-components/resolvers'; + +import { PrimeVueResolver } from '@primevue/auto-import-resolver'; + +import IconsResolver from 'unplugin-icons/resolver'; + +import { VantResolver } from '@vant/auto-import-resolver'; +// <<<<< +export async function loadPlugin(_configEnv: ConfigEnv): Promise { + return [ + // https://github.com/antfu/unplugin-auto-import + AutoImport({ + dirs: [ + // 'src/utils', + 'src/composables', + 'src/stores', + // 匹配所有 -auto-imports.ts / -auto-imports.tsx 结尾的文件 + 'src/**/*-auto-imports.{ts,tsx}', + ], + imports: [ + 'vue', + 'vue-i18n', + 'pinia', + '@vueuse/core', + VueRouterAutoImports, + createUtils4uAutoImports([]), + { + 'consola/browser': ['consola'], + 'vue-router/auto': ['useLink'], + 'naive-ui': ['useModal', 'useDialog', 'useMessage', 'useNotification', 'useLoadingBar'], + }, + ], + vueTemplate: true, + }), + // https://github.com/antfu/unplugin-vue-components + Components({ + // `__`开头的 + excludeNames: [/^__/], + // allow auto load markdown components under `./src/components/` + extensions: ['vue', 'md'], + // allow auto import and register components used in markdown + include: [/\.vue$/, /\.vue\?vue/, /\.md$/], + resolvers: [ + AntDesignVueResolver({ + importStyle: false, // css in js + resolveIcons: true, + }), + IconsResolver({ + customCollections: ['svg'], + prefix: 'icon' /* or */, + }), // https://github.com/unplugin/unplugin-icons?tab=readme-ov-file#auto-importing + TDesignResolver({ esm: true, library: 'mobile-vue' }), + VantResolver({ importStyle: true }), + PrimeVueResolver(/* { components: { prefix: 'P' } } */), + NaiveUiResolver(), + ], + }), + Icons({ + autoInstall: true, + customCollections: { + svg: FileSystemIconLoader('src/assets/icons/svgs', (svg) => { + return svg.replace(/^ { - return svg.replace(/^ or */, - }), // https://github.com/unplugin/unplugin-icons?tab=readme-ov-file#auto-importing - TDesignResolver({ esm: true, library: 'mobile-vue' }), - VantResolver({ importStyle: true }), - PrimeVueResolver(/* { components: { prefix: 'P' } } */), - NaiveUiResolver(), - ], - }), -] satisfies PluginOption;