按需加载路由
This commit is contained in:
@@ -2,24 +2,95 @@ import tailwindcss from '@tailwindcss/vite';
|
||||
import react from '@vitejs/plugin-react';
|
||||
import path, { resolve } from 'path';
|
||||
import { defineConfig, loadEnv } from 'vite';
|
||||
import { viteStaticCopy } from 'vite-plugin-static-copy';
|
||||
|
||||
// ============================================================
|
||||
// Vite 配置 - 性能优化版
|
||||
// - 代码分包 (manualChunks)
|
||||
// - gzip 压缩
|
||||
// - 路径别名
|
||||
// - CSS 代码分割
|
||||
// ============================================================
|
||||
|
||||
const ENV = { DEV: 'development', PROD: 'production' };
|
||||
|
||||
export default defineConfig(({ mode }) => {
|
||||
const env = loadEnv(mode, '.', '');
|
||||
return {
|
||||
plugins: [react(), tailwindcss()],
|
||||
define: {
|
||||
'process.env.GEMINI_API_KEY': JSON.stringify(env.GEMINI_API_KEY),
|
||||
},
|
||||
plugins: [
|
||||
react(),
|
||||
tailwindcss(),
|
||||
// 复制 Cesium 静态资源
|
||||
viteStaticCopy({
|
||||
targets: [
|
||||
{
|
||||
src: 'node_modules/cesium/Build/Cesium',
|
||||
dest: '',
|
||||
},
|
||||
],
|
||||
}),
|
||||
],
|
||||
|
||||
resolve: {
|
||||
alias: {
|
||||
//'@': path.resolve(__dirname, '.'),
|
||||
'@': resolve('src'),
|
||||
},
|
||||
},
|
||||
|
||||
// ---- 性能优化构建配置 ----
|
||||
build: {
|
||||
// 启用 CSS 代码分割(避免样式重复打包)
|
||||
cssCodeSplit: true,
|
||||
// 生成 sourcemap(生产可关闭)
|
||||
sourcemap: false,
|
||||
// chunk 大小警告阈值
|
||||
chunkSizeWarningLimit: 1000, // KB
|
||||
|
||||
rollupOptions: {
|
||||
output: {
|
||||
// ---- 手动分包策略 ----
|
||||
manualChunks(id) {
|
||||
// 1. 将 React 生态单独打包(利用浏览器缓存)
|
||||
if (id.includes('node_modules/react') || id.includes('node_modules/react-dom')) {
|
||||
return 'react-vendor';
|
||||
}
|
||||
// 2. Ant Design 单独打包
|
||||
if (id.includes('node_modules/antd') || id.includes('node_modules/@ant-design')) {
|
||||
return 'antd-vendor';
|
||||
}
|
||||
// 3. Cesium 单独打包(体积巨大)
|
||||
if (id.includes('node_modules/cesium') || id.includes('cesium')) {
|
||||
return 'cesium-vendor';
|
||||
}
|
||||
// 4. 其他 node_modules 合并
|
||||
if (id.includes('node_modules')) {
|
||||
return 'vendor';
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
define: {
|
||||
// Cesium 路径注入
|
||||
CESIUM_BASE_URL: JSON.stringify(
|
||||
'/Cesium'
|
||||
),
|
||||
// 环境变量注入
|
||||
'import.meta.env.VITE_API_BASE_URL': JSON.stringify(env.VITE_API_BASE_URL ?? env.baseURL ?? ''),
|
||||
},
|
||||
|
||||
server: {
|
||||
// HMR is disabled in AI Studio via DISABLE_HMR env var.
|
||||
// Do not modifyâfile watching is disabled to prevent flickering during agent edits.
|
||||
port: 5173,
|
||||
// HMR
|
||||
hmr: process.env.DISABLE_HMR !== 'true',
|
||||
|
||||
},
|
||||
|
||||
// ---- 优化用户体验 ----
|
||||
esbuild: {
|
||||
// 日志中排除特定的包警告
|
||||
logOverride: { 'this-is-undefined-in-esm': 'silent' },
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user