Files
web-Iot/vite.config.ts

95 lines
2.3 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.

// 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' },
},
};
});