功能: - 新增 PathBreadcrumb 组件,支持路径快速跳转 - 新增 DropdownItem 通用下拉菜单组件 优化: - 版本升级流程优化(Pinia 状态管理、进度节流、完整下载验证) - 模块延迟初始化(数据库、文件系统按需启动) - API 数据格式统一(蛇形转驼峰) - CodeMirror 语言包按需动态加载 - Markdown 渲染增强(支持锚点跳转) 重构: - 迁移到 Pinia 状态管理(stores/config.ts、stores/theme.ts、stores/update.ts) - 简化 UpdatePanel、UpdateNotification、ThemeToggle 逻辑 - 优化表结构加载逻辑 清理: - 删除测试组件 index-simple.vue - 删除旧的 useTheme.ts
75 lines
2.4 KiB
JavaScript
75 lines
2.4 KiB
JavaScript
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'
|
|
})
|
|
|
|
|