import vue from '@vitejs/plugin-vue' /** * * 扩展setup插件,支持在script标签中使用name属性 * usage: */ import VueSetupExtend from 'vite-plugin-vue-setup-extend' /** * * 组件库按需引入插件 * usage: 直接使用组件,无需在任何地方导入组件 */ import Components from 'unplugin-vue-components/vite' import { NaiveUiResolver } from 'unplugin-vue-components/resolvers' /** * * unplugin-icons插件,自动引入iconify图标 * usage: https://github.com/antfu/unplugin-icons * 图标库: https://icones.js.org/ */ import Icons from 'unplugin-icons/vite' /** * * unocss插件,原子css * https://github.com/antfu/unocss */ import Unocss from 'unocss/vite' // rollup打包分析插件 import visualizer from 'rollup-plugin-visualizer' import { configHtmlPlugin } from './html' import { configMockPlugin } from './mock' export function createVitePlugins(viteEnv, isBuild) { const plugins = [ vue(), VueSetupExtend(), Components({ resolvers: [NaiveUiResolver()], }), Icons({ compiler: 'vue3', autoInstall: true }), configHtmlPlugin(viteEnv, isBuild), Unocss(), ] viteEnv?.VITE_APP_USE_MOCK && plugins.push(configMockPlugin(isBuild)) if (isBuild) { plugins.push( visualizer({ open: true, gzipSize: true, brotliSize: true, }) ) } return plugins }