2026-01-16 13:06:44 +08:00
|
|
|
import type { PluginOption } from 'vite'
|
|
|
|
|
import vue from '@vitejs/plugin-vue'
|
|
|
|
|
import vueJsx from '@vitejs/plugin-vue-jsx'
|
|
|
|
|
import progress from 'vite-plugin-progress'
|
2026-03-13 17:52:13 +08:00
|
|
|
import { setupAnalyzer } from './analyzer'
|
|
|
|
|
import { setupCompression } from './compression'
|
|
|
|
|
import { setupDeploy } from './deploy'
|
2026-01-16 13:06:44 +08:00
|
|
|
import { setupDevtoolsPlugin } from './devtools'
|
|
|
|
|
import { setupHtmlPlugin } from './html'
|
2026-03-13 17:52:13 +08:00
|
|
|
import { setupImageOptimizer } from './image-optimizer'
|
|
|
|
|
import { setupPWA } from './pwa'
|
2026-01-16 13:06:44 +08:00
|
|
|
import { setupElegantRouter } from './router'
|
|
|
|
|
import { setupUnocss } from './unocss'
|
|
|
|
|
import { setupUnplugin } from './unplugin'
|
|
|
|
|
|
2026-03-13 17:52:13 +08:00
|
|
|
export function setupVitePlugins(viteEnv: Env.ImportMeta, buildTime: string, isBuild: boolean) {
|
2026-01-16 13:06:44 +08:00
|
|
|
const plugins: PluginOption = [
|
2026-03-13 17:52:13 +08:00
|
|
|
// 基础插件
|
2026-01-16 13:06:44 +08:00
|
|
|
vue(),
|
|
|
|
|
vueJsx(),
|
|
|
|
|
setupDevtoolsPlugin(viteEnv),
|
|
|
|
|
setupElegantRouter(),
|
|
|
|
|
setupUnocss(viteEnv),
|
|
|
|
|
...setupUnplugin(viteEnv),
|
|
|
|
|
progress(),
|
|
|
|
|
setupHtmlPlugin(buildTime),
|
2026-03-13 17:52:13 +08:00
|
|
|
|
|
|
|
|
// 优化插件
|
|
|
|
|
setupImageOptimizer(),
|
|
|
|
|
setupCompression(),
|
|
|
|
|
setupPWA(),
|
|
|
|
|
setupDeploy(isBuild),
|
2026-01-16 13:06:44 +08:00
|
|
|
]
|
|
|
|
|
|
2026-03-13 17:52:13 +08:00
|
|
|
// 构建时添加打包分析插件
|
|
|
|
|
if (isBuild) {
|
|
|
|
|
plugins.push(setupAnalyzer())
|
|
|
|
|
}
|
|
|
|
|
|
2026-01-16 13:06:44 +08:00
|
|
|
return plugins
|
|
|
|
|
}
|