blog-admin-web/vite.config.ts
灌糖包子 bcc09d7064
打包工具更换为vite
Co-authored-by: Copilot <copilot@github.com>
2026-04-28 16:34:30 +08:00

85 lines
2.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { execSync } from 'node:child_process'
import { fileURLToPath } from 'node:url'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
import { defineConfig, loadEnv } from 'vite'
const srcDir = fileURLToPath(new URL('./src', import.meta.url))
function resolveCommitInfo() {
try {
return execSync('git show -s --format=%cs%h', { stdio: ['ignore', 'pipe', 'ignore'] }).toString().trim()
} catch {
return 'unknown'
}
}
export default defineConfig(({ mode }) => {
const env = loadEnv(mode, process.cwd(), '')
const proxyTarget = env.VUE_APP_PROXY_TARGET || env.VITE_APP_PROXY_TARGET
return {
base: './',
envPrefix: ['VITE_', 'VUE_APP_'],
plugins: [
vue(),
AutoImport({
dts: './auto-imports.d.ts',
resolvers: [ElementPlusResolver()]
}),
Components({
dts: './components.d.ts',
resolvers: [ElementPlusResolver()]
})
],
resolve: {
alias: {
'@': srcDir
}
},
define: {
__APP_VERSION__: JSON.stringify(resolveCommitInfo())
},
server: {
port: 8080,
proxy: proxyTarget ? {
'/api': {
target: proxyTarget,
changeOrigin: true
}
} : undefined
},
build: {
sourcemap: false,
rollupOptions: {
output: {
manualChunks(id) {
if (id.includes('/node_modules/vue/') || id.includes('/node_modules/vue-router/') || id.includes('/node_modules/vuex/')) {
return 'vue'
}
if (id.includes('/node_modules/element-plus/') || id.includes('/node_modules/@element-plus/')) {
return 'element-plus'
}
if (id.includes('/node_modules/echarts/')) {
return 'echarts'
}
if (id.includes('/node_modules/hls.js/')) {
return 'media'
}
if (id.includes('/node_modules/')) {
return 'vendor'
}
if (id.includes('/src/views/system/')) {
return 'system'
}
if (id.includes('/src/views/api/')) {
return 'api'
}
}
}
}
}
}
})