import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import { resolve } from 'path' import AutoImport from 'unplugin-auto-import/vite' import Components from 'unplugin-vue-components/vite' import { ArcoResolver } from 'unplugin-vue-components/resolvers' export default defineConfig({ plugins: [ vue(), AutoImport({ imports: ['vue', 'vue-router'], dts: 'src/auto-imports.d.ts', }), Components({ resolvers: [ArcoResolver({ sideEffect: true })], dts: 'src/components.d.ts', }) ], resolve: { alias: { '@': resolve(__dirname, 'src') } }, build: { outDir: 'dist', emptyOutDir: true, sourcemap: false, minify: 'esbuild', cssCodeSplit: true, chunkSizeWarningLimit: 1000, esbuild: { target: 'es2020', drop: ['console', 'debugger'] }, rollupOptions: { output: { manualChunks: (id) => { if (!id.includes('node_modules')) return if (id.includes('@codemirror')) { if (id.includes('lang-') || id.includes('legacy-modes')) { return 'vendor-codemirror-langs' } return 'vendor-codemirror-core' } if (id.includes('@arco-design')) return 'vendor-arco' if (id.includes('mermaid')) return 'vendor-mermaid' if (id.includes('marked') || id.includes('highlight.js')) return 'vendor-markdown' if (id.includes('vue') || id.includes('pinia')) return 'vendor-vue' return 'vendor' }, chunkFileNames: 'assets/js/[name]-[hash].js', entryFileNames: 'assets/js/[name]-[hash].js', assetFileNames: 'assets/[ext]/[name]-[hash].[ext]' } } }, optimizeDeps: { include: [ 'vue', 'pinia', '@arco-design/web-vue', 'marked', 'highlight.js', '@codemirror/view', '@codemirror/state', '@codemirror/language', '@codemirror/commands', '@codemirror/lang-javascript', '@codemirror/lang-json', '@codemirror/lang-yaml', '@codemirror/lang-html', '@codemirror/lang-css', '@codemirror/lang-markdown', '@codemirror/lang-sql', '@codemirror/lang-java', '@codemirror/lang-python', '@codemirror/lang-php', '@codemirror/lang-rust', '@codemirror/lang-go', '@codemirror/lang-cpp', '@codemirror/legacy-modes/mode/clike', '@codemirror/legacy-modes/mode/ruby', '@codemirror/legacy-modes/mode/shell', '@codemirror/legacy-modes/mode/xml' ] }, cacheDir: 'node_modules/.vite' })