/** * Vite 插件配置 */ import vue from '@vitejs/plugin-vue'; import vueJsx from '@vitejs/plugin-vue-jsx'; import AutoImport from 'unplugin-auto-import/vite'; import Components from 'unplugin-vue-components/vite'; import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers'; import { visualizer } from 'rollup-plugin-visualizer'; /** * 获取基础插件配置 */ export function getPlugins(isProd) { const plugins = [ vue(), vueJsx(), // 自动导入 Vue API 和 Vue Router API AutoImport({ imports: [ 'vue', 'vue-router', 'pinia', '@vueuse/core', { 'ant-design-vue/es': [ 'message', 'notification', 'Modal', ], 'dayjs': [ ['default', 'dayjs'] ], 'axios': [ ['default', 'axios'] ], } ], dts: true, // 生成类型定义文件 eslintrc: { enabled: true, // 生成 .eslintrc-auto-import.json }, }), // 自动导入组件 Components({ resolvers: [ AntDesignVueResolver({ importStyle: false, // css in js }), ], dts: true, // 生成类型定义文件 directoryAsNamespace: false, globalNamespaces: [], directives: true, include: [/\.vue$/, /\.vue\?vue/, /\.md$/], exclude: [/[\\/]node_modules[\\/]/, /[\\/]\.git[\\/]/, /[\\/]\.nuxt[\\/]/], }), ]; // 生产环境添加额外的插件 if (isProd) { // 添加打包分析插件 plugins.push( visualizer({ filename: 'dist/stats.html', open: true, gzipSize: true, brotliSize: true, }) ); } return plugins; }