import { fileURLToPath, URL } from 'node:url' import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import vueJsx from '@vitejs/plugin-vue-jsx' import vueDevTools from 'vite-plugin-vue-devtools' import UnoCSS from 'unocss/vite' // https://vite.dev/config/ export default defineConfig({ plugins: [ vue({ template: { compilerOptions: { isCustomElement: tag => tag.endsWith('-element') // 忽略自定义元素 } } }), vueJsx(), vueDevTools(), UnoCSS() ], resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), 'vue': 'vue/dist/vue.esm-bundler.js' } }, build: { rollupOptions: { output: { // 配置代码分割 manualChunks: { // 将Vue相关库打包到单独的chunk中 vue: ['vue', 'vue-router', 'pinia'], // 将UI库打包到单独的chunk中 ui: ['naive-ui'], // 将工具库打包到单独的chunk中 utils: ['lodash', 'uuid'], // 将VueUse打包到单独的chunk中 vueuse: ['@vueuse/core'] } } }, // 启用压缩 minify: 'esbuild', // 启用CSS代码分割 cssCodeSplit: true } })