95 lines
2.3 KiB
TypeScript
95 lines
2.3 KiB
TypeScript
// CESIUM_BASE_URL 由 vite-plugin-cesium 自动注入(值为 base + '/cesium/',小写带尾斜杠)
|
||
// 手动覆写会与 viteStaticCopy 的小写 cesium/ 目标路径冲突,因此注释掉
|
||
import tailwindcss from '@tailwindcss/vite';
|
||
import react from '@vitejs/plugin-react';
|
||
import path, { resolve } from 'path';
|
||
import { defineConfig, loadEnv } from 'vite';
|
||
import cesiumPlugin from 'vite-plugin-cesium';
|
||
import { viteStaticCopy } from "vite-plugin-static-copy";
|
||
|
||
// ============================================================
|
||
// Vite 配置 - 性能优化版
|
||
// - 代码分包 (manualChunks)
|
||
// - 路径别名
|
||
// - CSS 代码分割
|
||
// ============================================================
|
||
|
||
const ENV = { DEV: 'development', PROD: 'production' };
|
||
|
||
export default defineConfig(({ mode }) => {
|
||
const env = loadEnv(mode, '.', '');
|
||
return {
|
||
|
||
plugins: [
|
||
react(),
|
||
tailwindcss(),
|
||
|
||
cesiumPlugin(), viteStaticCopy({
|
||
targets: [
|
||
{
|
||
src: "node_modules/cesium/Build/Cesium",
|
||
dest: ""
|
||
}, {
|
||
src: 'node_modules/cesium/Build/Cesium/Workers/**',
|
||
dest: 'cesium/Workers',
|
||
},
|
||
{
|
||
src: 'node_modules/cesium/Build/Cesium/ThirdParty/**',
|
||
dest: 'cesium/ThirdParty',
|
||
},
|
||
{
|
||
src: 'node_modules/cesium/Build/Cesium/Assets/**',
|
||
dest: 'cesium/Assets',
|
||
},
|
||
{
|
||
src: 'node_modules/cesium/Build/Cesium/Widgets/**',
|
||
dest: 'cesium/Widgets',
|
||
},
|
||
]
|
||
})
|
||
|
||
],
|
||
|
||
resolve: {
|
||
alias: {
|
||
'@': resolve('src'),
|
||
},
|
||
},
|
||
|
||
// ---- 性能优化构建配置 ----
|
||
build: {
|
||
// 启用 CSS 代码分割(避免样式重复打包)
|
||
cssCodeSplit: true,
|
||
// 生成 sourcemap(生产可关闭)
|
||
sourcemap: false,
|
||
// chunk 大小警告阈值
|
||
chunkSizeWarningLimit: 1000, // KB
|
||
|
||
rollupOptions: {
|
||
output: {
|
||
|
||
},
|
||
},
|
||
},
|
||
|
||
define: {
|
||
// Cesium 路径注入
|
||
'import.meta.env.VITE_API_BASE_URL': JSON.stringify(env.VITE_API_BASE_URL ?? env.baseURL ?? ''),
|
||
'process.env': {}
|
||
},
|
||
|
||
server: {
|
||
port: 5173,
|
||
// HMR
|
||
hmr: process.env.DISABLE_HMR !== 'true',
|
||
|
||
},
|
||
|
||
// ---- 优化用户体验 ----
|
||
esbuild: {
|
||
// 日志中排除特定的包警告
|
||
logOverride: { 'this-is-undefined-in-esm': 'silent' },
|
||
},
|
||
};
|
||
});
|