Files
GERP/vite.config.ts
T

95 lines
2.8 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 { defineConfig } from 'vite'
import { fileURLToPath, URL } 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'
// https://vite.dev/config/
export default defineConfig({
plugins: [
vue(),
// 自动导入 Vue / Vue Router / Pinia 的 API 与 Element Plus 组件
AutoImport({
imports: ['vue', 'vue-router', 'pinia'],
resolvers: [ElementPlusResolver()],
dts: 'src/types/auto-imports.d.ts',
eslintrc: { enabled: false },
}),
Components({
resolvers: [ElementPlusResolver()],
dts: 'src/types/components.d.ts',
dirs: ['src/components'],
}),
],
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url)),
},
},
server: {
host: '0.0.0.0',
port: 5173,
// 开发期把 API 请求代理到 Django 后端,Cookie 认证跨域自动处理
proxy: {
'/api': {
target: 'http://127.0.0.1:8000',
changeOrigin: true,
},
'/API': {
target: 'http://127.0.0.1:8000',
changeOrigin: true,
},
'/Auth': {
target: 'http://127.0.0.1:8000',
changeOrigin: true,
},
'/Query': {
target: 'http://127.0.0.1:8000',
changeOrigin: true,
},
'/Modify': {
target: 'http://127.0.0.1:8000',
changeOrigin: true,
},
'/static': {
target: 'http://127.0.0.1:8000',
changeOrigin: true,
},
'/media': {
target: 'http://127.0.0.1:8000',
changeOrigin: true,
},
},
},
build: {
outDir: 'dist',
sourcemap: false,
chunkSizeWarningLimit: 2000,
// 合并全部 CSS 为单个文件:消灭按需组件产生的零碎 .css 与 css-*.js(可省约 90 个请求)
cssCodeSplit: false,
rollupOptions: {
output: {
// 归并 node_modules 公共依赖,消灭 0.1-10kB 的细碎 chunk(lodash 工具 / element-plus 小组件等)
manualChunks(id: string) {
if (!id.includes('node_modules')) return undefined
if (id.includes('element-plus') || id.includes('@element-plus')) return 'element-plus'
if (id.includes('vxe-table')) return 'vxe-table'
if (id.includes('@formkit') || id.includes('formkit')) return 'formkit'
if (id.includes('lodash') || id.includes('xe-utils')) return 'utils'
if (
id.includes('/node_modules/vue') ||
id.includes('/node_modules/vue-router') ||
id.includes('/node_modules/pinia') ||
id.includes('/node_modules/@vue') ||
id.includes('/node_modules/@vueuse')
) {
return 'vue-vendor'
}
return 'vendor'
},
},
},
},
})