Files
web-Iot/vite.config.ts
2026-07-13 16:25:44 +08:00

101 lines
2.4 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 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)
// - gzip 压缩
// - 路径别名
// - 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: ""
}
]
})
],
resolve: {
alias: {
'@': 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 ?? ''),
'process.env': {}
},
server: {
port: 5173,
// HMR
hmr: process.env.DISABLE_HMR !== 'true',
},
// ---- 优化用户体验 ----
esbuild: {
// 日志中排除特定的包警告
logOverride: { 'this-is-undefined-in-esm': 'silent' },
},
};
});