import { fileURLToPath, URL } from 'node:url' import { defineConfig, loadEnv } from 'vite' import vue from '@vitejs/plugin-vue' import vueDevTools from 'vite-plugin-vue-devtools' import Components from 'unplugin-vue-components/vite' import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers' import { readFileSync } from 'fs' import { formatDateTime } from './src/utils' import buildInfoPlugin from './scripts/build-info-plugin' import path from 'path' // https://vite.dev/config/ export default defineConfig(({ mode }) => { // 加载环境变量 const env = loadEnv(mode, process.cwd(), '') // 获取当前环境的API主机 const apiHost = env.VITE_APP_HOST const mqttHostAlarm = env.VITE_MQTT_HOST_ALARM const mqttHostPoint = env.VITE_MQTT_HOST_POINT // 添加日志输出 console.log('📘📘📘 Environment LOG 📘📘📘', { mode, apiHost, mqttHostAlarm, mqttHostPoint, }) const pkg = JSON.parse(readFileSync('./package.json', 'utf-8')) return { plugins: [ vue(), vueDevTools(), buildInfoPlugin(mode), Components({ resolvers: [ AntDesignVueResolver({ importStyle: false, // css in js }), ], }), ], define: { __APP_VERSION__: JSON.stringify(pkg.version), __BUILD_TIME__: JSON.stringify(formatDateTime(new Date())), }, resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), 'three/addons': path.join(__dirname, 'node_modules/three/addons'), }, }, server: { proxy: { '/portal-service-server': { target: apiHost, changeOrigin: true, secure: false, rewrite: (path) => path, }, '/pub': { target: apiHost, changeOrigin: true, secure: false, rewrite: (path) => path, }, }, cors: true, }, build: { chunkSizeWarningLimit: 1000, rollupOptions: { output: { manualChunks(id) { if (id.includes('node_modules')) { if (id.includes('three')) return 'threejs' if (id.includes('echarts')) return 'echarts' if (id.includes('ant-design-vue')) return 'antdv' if (id.includes('tiny-pinyin')) return 'pinyin' if (id.includes('lodash-es')) return 'lodash' if (id.includes('vue')) return 'vue' return 'vendor' } }, }, }, }, } })