import { defineConfig, loadEnv } from "vite"; import path from "path"; import createVitePlugins from "./vite/plugins"; export default defineConfig(({ mode, command }) => { const env = loadEnv(mode, process.cwd()); const { VITE_APP_ENV } = env; const baseUrl = VITE_APP_ENV === "development" ? "http://192.168.1.35:9009" : env.VITE_BASE_API; const javaUrl = VITE_APP_ENV === "development" ? "http://192.168.1.35:9009" : env.VITE_JAVA_API; return { define: { __BASE_API__: JSON.stringify(javaUrl), }, base: "/", plugins: createVitePlugins(env, command === "build"), resolve: { alias: { "~": path.resolve(__dirname, "./"), "@": path.resolve(__dirname, "./src"), }, extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"], dedupe: ["vue", "axios"], }, // 缓存路径改为相对路径,Jenkins 绝对路径极容易报错 cacheDir: "node_modules/.vite", optimizeDeps: { include: ["vue", "axios", "element-plus", "echarts"], esbuildOptions: { target: "es2020", }, }, build: { sourcemap: false, outDir: "dist", assetsDir: "assets", chunkSizeWarningLimit: 2000, minify: "esbuild", reportCompressedSize: false, rollupOptions: { output: { chunkFileNames: "static/js/[name]-[hash].js", entryFileNames: "static/js/[name]-[hash].js", assetFileNames: "static/[ext]/[name]-[hash].[ext]", manualChunks(id) { // 更稳定的自动分包,避免你之前写死分包导致循环依赖 if (id.includes("node_modules/vue") || id.includes("node_modules/vue-router") || id.includes("node_modules/pinia") || id.includes("node_modules/axios")) { return "vendor"; } if (id.includes("node_modules/element-plus")) { return "ui"; } if (id.includes("node_modules/echarts")) { return "charts"; } }, }, }, }, server: { port: 8001, host: "0.0.0.0", open: true, proxy: { "/dev-api": { target: baseUrl, changeOrigin: true, rewrite: (p) => p.replace(/^\/dev-api/, ""), }, "/v3/api-docs": { target: baseUrl, changeOrigin: true, }, }, }, css: { postcss: { plugins: [ { postcssPlugin: "internal:charset-removal", AtRule: { charset: (atRule) => { if (atRule.name === "charset") atRule.remove(); }, }, }, ] }, }, esbuild: { logOverride: { "this-is-undefined-in-esm": "silent" }, target: "es2020", }, }; });