51 lines
1.4 KiB
TypeScript
51 lines
1.4 KiB
TypeScript
import { defineConfig } from 'vite'
|
|
import react from '@vitejs/plugin-react'
|
|
import { readFileSync } from 'fs'
|
|
import { resolve } from 'path'
|
|
|
|
// 读取 package.json 获取版本号
|
|
const packageJson = JSON.parse(
|
|
readFileSync(resolve(__dirname, 'package.json'), 'utf-8')
|
|
)
|
|
|
|
// https://vite.dev/config/
|
|
export default defineConfig({
|
|
plugins: [react()],
|
|
// 定义全局常量,在构建时注入
|
|
define: {
|
|
'import.meta.env.VITE_APP_VERSION': JSON.stringify(packageJson.version),
|
|
'import.meta.env.VITE_BUILD_TIME': JSON.stringify(
|
|
new Date().toISOString().split('T')[0]
|
|
),
|
|
},
|
|
build: {
|
|
outDir: '../backend/static',
|
|
emptyOutDir: true,
|
|
rollupOptions: {
|
|
output: {
|
|
// 手动分割代码块,将大型依赖库分离
|
|
manualChunks: {
|
|
// React 核心库
|
|
'vendor-react': ['react', 'react-dom', 'react-router-dom'],
|
|
// Ant Design UI库(最大的依赖)
|
|
'vendor-antd': ['antd', '@ant-design/icons'],
|
|
// 其他工具库
|
|
'vendor-utils': ['axios', 'dayjs', 'zustand'],
|
|
// Diff查看器(较大的组件)
|
|
'vendor-diff': ['react-diff-viewer-continued'],
|
|
// 拖拽库
|
|
'vendor-dnd': ['@dnd-kit/core', '@dnd-kit/sortable', '@dnd-kit/utilities'],
|
|
},
|
|
},
|
|
},
|
|
},
|
|
server: {
|
|
proxy: {
|
|
'/api': {
|
|
target: 'http://localhost:8000',
|
|
changeOrigin: true,
|
|
}
|
|
}
|
|
}
|
|
})
|