var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { get: (a, b) => (typeof require !== "undefined" ? require : a)[b] }) : x)(function(x) { if (typeof require !== "undefined") return require.apply(this, arguments); throw Error('Dynamic require of "' + x + '" is not supported'); }); // vite.config.ts import { defineConfig, loadEnv } from "file:///app/node_modules/vite/dist/node/index.js"; import vue from "file:///app/node_modules/@vitejs/plugin-vue/dist/index.mjs"; import path from "path"; import { visualizer } from "file:///app/node_modules/rollup-plugin-visualizer/dist/plugin/index.js"; import { createHtmlPlugin } from "file:///app/node_modules/vite-plugin-html/dist/index.mjs"; var __vite_injected_original_dirname = "/app"; var vite_config_default = defineConfig(({ command, mode }) => { const env = loadEnv(mode, process.cwd(), ""); const isProduction = mode === "production"; return { plugins: [ vue(), // HTML 模板处理 createHtmlPlugin({ minify: isProduction, inject: { data: { title: env.VITE_APP_TITLE || "\u8003\u57F9\u7EC3\u7CFB\u7EDF", description: "\u8003\u57F9\u7EC3\u7CFB\u7EDF - \u667A\u80FD\u5B66\u4E60\u5E73\u53F0" } } }), // 打包分析(仅在分析模式下) ...process.env.ANALYZE === "true" ? [visualizer({ filename: "dist/stats.html", open: true, gzipSize: true, brotliSize: true })] : [] ].filter(Boolean), resolve: { alias: { "@": path.resolve(__vite_injected_original_dirname, "./src") } }, // CSS 配置 css: { preprocessorOptions: { scss: { additionalData: `@import "@/style/variables.scss";` } }, // 生产环境压缩CSS ...isProduction && { postcss: { plugins: [ __require("file:///app/node_modules/autoprefixer/lib/autoprefixer.js"), __require("file:///app/node_modules/cssnano/src/index.js")({ preset: "default" }) ] } } }, // 构建配置 build: { target: "es2015", outDir: "dist", assetsDir: "assets", sourcemap: !isProduction, minify: isProduction ? "terser" : false, // Terser 压缩配置 terserOptions: { compress: { drop_console: isProduction, drop_debugger: isProduction, pure_funcs: isProduction ? ["console.log", "console.info"] : [] } }, // 代码分割配置 rollupOptions: { output: { // 手动分割代码块 manualChunks: { // Vue 相关 vue: ["vue", "vue-router", "pinia"], // UI 库 "element-plus": ["element-plus", "@element-plus/icons-vue"], // 图表库 echarts: ["echarts"], // 工具库 utils: ["axios"] }, // 文件命名 chunkFileNames: "assets/js/[name]-[hash].js", entryFileNames: "assets/js/[name]-[hash].js", assetFileNames: (assetInfo) => { const info = assetInfo.name.split("."); let extType = info[info.length - 1]; if (/\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/i.test(assetInfo.name)) { extType = "media"; } else if (/\.(png|jpe?g|gif|svg)(\?.*)?$/i.test(assetInfo.name)) { extType = "img"; } else if (/\.(woff2?|eot|ttf|otf)(\?.*)?$/i.test(assetInfo.name)) { extType = "fonts"; } return `assets/${extType}/[name]-[hash].[ext]`; } } }, // 警告大小限制 chunkSizeWarningLimit: 1e3, // 压缩资源 assetsInlineLimit: 4096 }, // 开发服务器配置 server: { port: 3001, host: true, open: false, cors: true, proxy: { "/api": { target: env.VITE_API_BASE_URL || "http://localhost:8000", changeOrigin: true, rewrite: (path2) => path2, configure: (proxy, options) => { proxy.on("proxyRes", (proxyRes, req, res) => { proxyRes.headers["content-type"] = "application/json; charset=utf-8"; }); } }, "/ws": { target: env.VITE_WS_BASE_URL || "ws://localhost:8000", ws: true, changeOrigin: true } } }, // 预览服务器配置 preview: { port: 4173, host: true, cors: true }, // 优化配置 optimizeDeps: { include: [ "vue", "vue-router", "pinia", "element-plus", "@element-plus/icons-vue", "echarts" ], exclude: ["@vitejs/plugin-vue"] }, // 测试配置 test: { environment: "jsdom", globals: true, setupFiles: ["./src/test/setup.ts"], include: ["src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"], exclude: ["node_modules", "dist", ".idea", ".git", ".cache"], coverage: { provider: "v8", reporter: ["text", "json", "html"], exclude: [ "node_modules/", "src/test/", "**/*.d.ts", "**/*.config.*", "**/coverage/**", "**/dist/**", "**/.{idea,git,cache,output,temp}/**" ], thresholds: { global: { branches: 60, functions: 60, lines: 60, statements: 60 } } } }, // 环境变量配置 define: { __VUE_OPTIONS_API__: true, __VUE_PROD_DEVTOOLS__: !isProduction, __APP_VERSION__: JSON.stringify(process.env.npm_package_version || "1.0.0") }, // 日志级别 logLevel: isProduction ? "info" : "warn" }; }); export { vite_config_default as default }; //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvYXBwXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCIvYXBwL3ZpdGUuY29uZmlnLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9hcHAvdml0ZS5jb25maWcudHNcIjsvLy8gPHJlZmVyZW5jZSB0eXBlcz1cInZpdGVzdFwiIC8+XG5pbXBvcnQgeyBkZWZpbmVDb25maWcsIGxvYWRFbnYgfSBmcm9tICd2aXRlJ1xuaW1wb3J0IHZ1ZSBmcm9tICdAdml0ZWpzL3BsdWdpbi12dWUnXG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJ1xuaW1wb3J0IHsgdmlzdWFsaXplciB9IGZyb20gJ3JvbGx1cC1wbHVnaW4tdmlzdWFsaXplcidcbmltcG9ydCB7IGNyZWF0ZUh0bWxQbHVnaW4gfSBmcm9tICd2aXRlLXBsdWdpbi1odG1sJ1xuXG4vLyBodHRwczovL3ZpdGVqcy5kZXYvY29uZmlnL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKCh7IGNvbW1hbmQsIG1vZGUgfSkgPT4ge1xuICBjb25zdCBlbnYgPSBsb2FkRW52KG1vZGUsIHByb2Nlc3MuY3dkKCksICcnKVxuICBjb25zdCBpc1Byb2R1Y3Rpb24gPSBtb2RlID09PSAncHJvZHVjdGlvbidcblxuICByZXR1cm4ge1xuICAgIHBsdWdpbnM6IFtcbiAgICAgIHZ1ZSgpLFxuICAgICAgXG4gICAgICAvLyBIVE1MIFx1NkEyMVx1Njc3Rlx1NTkwNFx1NzQwNlxuICAgICAgY3JlYXRlSHRtbFBsdWdpbih7XG4gICAgICAgIG1pbmlmeTogaXNQcm9kdWN0aW9uLFxuICAgICAgICBpbmplY3Q6IHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0aXRsZTogZW52LlZJVEVfQVBQX1RJVExFIHx8ICdcdTgwMDNcdTU3RjlcdTdFQzNcdTdDRkJcdTdFREYnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdcdTgwMDNcdTU3RjlcdTdFQzNcdTdDRkJcdTdFREYgLSBcdTY2N0FcdTgwRkRcdTVCNjZcdTRFNjBcdTVFNzNcdTUzRjAnXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSxcblxuICAgICAgLy8gXHU2MjUzXHU1MzA1XHU1MjA2XHU2NzkwXHVGRjA4XHU0RUM1XHU1NzI4XHU1MjA2XHU2NzkwXHU2QTIxXHU1RjBGXHU0RTBCXHVGRjA5XG4gICAgICAuLi4ocHJvY2Vzcy5lbnYuQU5BTFlaRSA9PT0gJ3RydWUnID8gW3Zpc3VhbGl6ZXIoe1xuICAgICAgICBmaWxlbmFtZTogJ2Rpc3Qvc3RhdHMuaHRtbCcsXG4gICAgICAgIG9wZW46IHRydWUsXG4gICAgICAgIGd6aXBTaXplOiB0cnVlLFxuICAgICAgICBicm90bGlTaXplOiB0cnVlXG4gICAgICB9KV0gOiBbXSlcbiAgICBdLmZpbHRlcihCb29sZWFuKSxcblxuICAgIHJlc29sdmU6IHtcbiAgICAgIGFsaWFzOiB7XG4gICAgICAgICdAJzogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4vc3JjJylcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLy8gQ1NTIFx1OTE0RFx1N0Y2RVxuICAgIGNzczoge1xuICAgICAgcHJlcHJvY2Vzc29yT3B0aW9uczoge1xuICAgICAgICBzY3NzOiB7XG4gICAgICAgICAgYWRkaXRpb25hbERhdGE6IGBAaW1wb3J0IFwiQC9zdHlsZS92YXJpYWJsZXMuc2Nzc1wiO2BcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIFx1NzUxRlx1NEVBN1x1NzNBRlx1NTg4M1x1NTM4Qlx1N0YyOUNTU1xuICAgICAgLi4uKGlzUHJvZHVjdGlvbiAmJiB7XG4gICAgICAgIHBvc3Rjc3M6IHtcbiAgICAgICAgICBwbHVnaW5zOiBbXG4gICAgICAgICAgICByZXF1aXJlKCdhdXRvcHJlZml4ZXInKSxcbiAgICAgICAgICAgIHJlcXVpcmUoJ2Nzc25hbm8nKSh7XG4gICAgICAgICAgICAgIHByZXNldDogJ2RlZmF1bHQnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9LFxuXG4gICAgLy8gXHU2Nzg0XHU1RUZBXHU5MTREXHU3RjZFXG4gICAgYnVpbGQ6IHtcbiAgICAgIHRhcmdldDogJ2VzMjAxNScsXG4gICAgICBvdXREaXI6ICdkaXN0JyxcbiAgICAgIGFzc2V0c0RpcjogJ2Fzc2V0cycsXG4gICAgICBzb3VyY2VtYXA6ICFpc1Byb2R1Y3Rpb24sXG4gICAgICBtaW5pZnk6IGlzUHJvZHVjdGlvbiA/ICd0ZXJzZXInIDogZmFsc2UsXG4gICAgICBcbiAgICAgIC8vIFRlcnNlciBcdTUzOEJcdTdGMjlcdTkxNERcdTdGNkVcbiAgICAgIHRlcnNlck9wdGlvbnM6IHtcbiAgICAgICAgY29tcHJlc3M6IHtcbiAgICAgICAgICBkcm9wX2NvbnNvbGU6IGlzUHJvZHVjdGlvbixcbiAgICAgICAgICBkcm9wX2RlYnVnZ2VyOiBpc1Byb2R1Y3Rpb24sXG4gICAgICAgICAgcHVyZV9mdW5jczogaXNQcm9kdWN0aW9uID8gWydjb25zb2xlLmxvZycsICdjb25zb2xlLmluZm8nXSA6IFtdXG4gICAgICAgIH1cbiAgICAgIH0sXG5cbiAgICAgIC8vIFx1NEVFM1x1NzgwMVx1NTIwNlx1NTI3Mlx1OTE0RFx1N0Y2RVxuICAgICAgcm9sbHVwT3B0aW9uczoge1xuICAgICAgICBvdXRwdXQ6IHtcbiAgICAgICAgICAvLyBcdTYyNEJcdTUyQThcdTUyMDZcdTUyNzJcdTRFRTNcdTc4MDFcdTU3NTdcbiAgICAgICAgICBtYW51YWxDaHVua3M6IHtcbiAgICAgICAgICAgIC8vIFZ1ZSBcdTc2RjhcdTUxNzNcbiAgICAgICAgICAgIHZ1ZTogWyd2dWUnLCAndnVlLXJvdXRlcicsICdwaW5pYSddLFxuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBVSSBcdTVFOTNcbiAgICAgICAgICAgICdlbGVtZW50LXBsdXMnOiBbJ2VsZW1lbnQtcGx1cycsICdAZWxlbWVudC1wbHVzL2ljb25zLXZ1ZSddLFxuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBcdTU2RkVcdTg4NjhcdTVFOTNcbiAgICAgICAgICAgIGVjaGFydHM6IFsnZWNoYXJ0cyddLFxuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBcdTVERTVcdTUxNzdcdTVFOTNcbiAgICAgICAgICAgIHV0aWxzOiBbJ2F4aW9zJ11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFxuICAgICAgICAgIC8vIFx1NjU4N1x1NEVGNlx1NTQ3RFx1NTQwRFxuICAgICAgICAgIGNodW5rRmlsZU5hbWVzOiAnYXNzZXRzL2pzL1tuYW1lXS1baGFzaF0uanMnLFxuICAgICAgICAgIGVudHJ5RmlsZU5hbWVzOiAnYXNzZXRzL2pzL1tuYW1lXS1baGFzaF0uanMnLFxuICAgICAgICAgIGFzc2V0RmlsZU5hbWVzOiAoYXNzZXRJbmZvKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmZvID0gYXNzZXRJbmZvLm5hbWUuc3BsaXQoJy4nKVxuICAgICAgICAgICAgbGV0IGV4dFR5cGUgPSBpbmZvW2luZm8ubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKC9cXC4obXA0fHdlYm18b2dnfG1wM3x3YXZ8ZmxhY3xhYWMpKFxcPy4qKT8kL2kudGVzdChhc3NldEluZm8ubmFtZSkpIHtcbiAgICAgICAgICAgICAgZXh0VHlwZSA9ICdtZWRpYSdcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoL1xcLihwbmd8anBlP2d8Z2lmfHN2ZykoXFw/LiopPyQvaS50ZXN0KGFzc2V0SW5mby5uYW1lKSkge1xuICAgICAgICAgICAgICBleHRUeXBlID0gJ2ltZydcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoL1xcLih3b2ZmMj98ZW90fHR0ZnxvdGYpKFxcPy4qKT8kL2kudGVzdChhc3NldEluZm8ubmFtZSkpIHtcbiAgICAgICAgICAgICAgZXh0VHlwZSA9ICdmb250cydcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgcmV0dXJuIGBhc3NldHMvJHtleHRUeXBlfS9bbmFtZV0tW2hhc2hdLltleHRdYFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcblxuICAgICAgLy8gXHU4QjY2XHU1NDRBXHU1OTI3XHU1QzBGXHU5NjUwXHU1MjM2XG4gICAgICBjaHVua1NpemVXYXJuaW5nTGltaXQ6IDEwMDAsXG4gICAgICBcbiAgICAgIC8vIFx1NTM4Qlx1N0YyOVx1OEQ0NFx1NkU5MFxuICAgICAgYXNzZXRzSW5saW5lTGltaXQ6IDQwOTZcbiAgICB9LFxuXG4gICAgLy8gXHU1RjAwXHU1M0QxXHU2NzBEXHU1MkExXHU1NjY4XHU5MTREXHU3RjZFXG4gICAgc2VydmVyOiB7XG4gICAgICBwb3J0OiAzMDAxLFxuICAgICAgaG9zdDogdHJ1ZSxcbiAgICAgIG9wZW46IGZhbHNlLFxuICAgICAgY29yczogdHJ1ZSxcbiAgICAgIHByb3h5OiB7XG4gICAgICAgICcvYXBpJzoge1xuICAgICAgICAgIHRhcmdldDogZW52LlZJVEVfQVBJX0JBU0VfVVJMIHx8ICdodHRwOi8vbG9jYWxob3N0OjgwMDAnLFxuICAgICAgICAgIGNoYW5nZU9yaWdpbjogdHJ1ZSxcbiAgICAgICAgICByZXdyaXRlOiAocGF0aCkgPT4gcGF0aCxcbiAgICAgICAgICBjb25maWd1cmU6IChwcm94eSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgcHJveHkub24oJ3Byb3h5UmVzJywgKHByb3h5UmVzLCByZXEsIHJlcykgPT4ge1xuICAgICAgICAgICAgICAvLyBcdTc4NkVcdTRGRERcdTRFRTNcdTc0MDZcdTU0Q0RcdTVFOTRcdTZCNjNcdTc4NkVcdThCQkVcdTdGNkUgVVRGLTggXHU3RjE2XHU3ODAxXG4gICAgICAgICAgICAgIHByb3h5UmVzLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddID0gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJy93cyc6IHtcbiAgICAgICAgICB0YXJnZXQ6IGVudi5WSVRFX1dTX0JBU0VfVVJMIHx8ICd3czovL2xvY2FsaG9zdDo4MDAwJyxcbiAgICAgICAgICB3czogdHJ1ZSxcbiAgICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyBcdTk4ODRcdTg5QzhcdTY3MERcdTUyQTFcdTU2NjhcdTkxNERcdTdGNkVcbiAgICBwcmV2aWV3OiB7XG4gICAgICBwb3J0OiA0MTczLFxuICAgICAgaG9zdDogdHJ1ZSxcbiAgICAgIGNvcnM6IHRydWVcbiAgICB9LFxuXG4gICAgLy8gXHU0RjE4XHU1MzE2XHU5MTREXHU3RjZFXG4gICAgb3B0aW1pemVEZXBzOiB7XG4gICAgICBpbmNsdWRlOiBbXG4gICAgICAgICd2dWUnLFxuICAgICAgICAndnVlLXJvdXRlcicsXG4gICAgICAgICdwaW5pYScsXG4gICAgICAgICdlbGVtZW50LXBsdXMnLFxuICAgICAgICAnQGVsZW1lbnQtcGx1cy9pY29ucy12dWUnLFxuICAgICAgICAnZWNoYXJ0cydcbiAgICAgIF0sXG4gICAgICBleGNsdWRlOiBbJ0B2aXRlanMvcGx1Z2luLXZ1ZSddXG4gICAgfSxcblxuICAgIC8vIFx1NkQ0Qlx1OEJENVx1OTE0RFx1N0Y2RVxuICAgIHRlc3Q6IHtcbiAgICAgIGVudmlyb25tZW50OiAnanNkb20nLFxuICAgICAgZ2xvYmFsczogdHJ1ZSxcbiAgICAgIHNldHVwRmlsZXM6IFsnLi9zcmMvdGVzdC9zZXR1cC50cyddLFxuICAgICAgaW5jbHVkZTogWydzcmMvKiovKi57dGVzdCxzcGVjfS57anMsbWpzLGNqcyx0cyxtdHMsY3RzLGpzeCx0c3h9J10sXG4gICAgICBleGNsdWRlOiBbJ25vZGVfbW9kdWxlcycsICdkaXN0JywgJy5pZGVhJywgJy5naXQnLCAnLmNhY2hlJ10sXG4gICAgICBjb3ZlcmFnZToge1xuICAgICAgICBwcm92aWRlcjogJ3Y4JyxcbiAgICAgICAgcmVwb3J0ZXI6IFsndGV4dCcsICdqc29uJywgJ2h0bWwnXSxcbiAgICAgICAgZXhjbHVkZTogW1xuICAgICAgICAgICdub2RlX21vZHVsZXMvJyxcbiAgICAgICAgICAnc3JjL3Rlc3QvJyxcbiAgICAgICAgICAnKiovKi5kLnRzJyxcbiAgICAgICAgICAnKiovKi5jb25maWcuKicsXG4gICAgICAgICAgJyoqL2NvdmVyYWdlLyoqJyxcbiAgICAgICAgICAnKiovZGlzdC8qKicsXG4gICAgICAgICAgJyoqLy57aWRlYSxnaXQsY2FjaGUsb3V0cHV0LHRlbXB9LyoqJ1xuICAgICAgICBdLFxuICAgICAgICB0aHJlc2hvbGRzOiB7XG4gICAgICAgICAgZ2xvYmFsOiB7XG4gICAgICAgICAgICBicmFuY2hlczogNjAsXG4gICAgICAgICAgICBmdW5jdGlvbnM6IDYwLFxuICAgICAgICAgICAgbGluZXM6IDYwLFxuICAgICAgICAgICAgc3RhdGVtZW50czogNjBcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLy8gXHU3M0FGXHU1ODgzXHU1M0Q4XHU5MUNGXHU5MTREXHU3RjZFXG4gICAgZGVmaW5lOiB7XG4gICAgICBfX1ZVRV9PUFRJT05TX0FQSV9fOiB0cnVlLFxuICAgICAgX19WVUVfUFJPRF9ERVZUT09MU19fOiAhaXNQcm9kdWN0aW9uLFxuICAgICAgX19BUFBfVkVSU0lPTl9fOiBKU09OLnN0cmluZ2lmeShwcm9jZXNzLmVudi5ucG1fcGFja2FnZV92ZXJzaW9uIHx8ICcxLjAuMCcpXG4gICAgfSxcblxuICAgIC8vIFx1NjVFNVx1NUZEN1x1N0VBN1x1NTIyQlxuICAgIGxvZ0xldmVsOiBpc1Byb2R1Y3Rpb24gPyAnaW5mbycgOiAnd2FybidcbiAgfVxufSkiXSwKICAibWFwcGluZ3MiOiAiOzs7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