| | |
| | | import path from "path"; |
| | | import createVitePlugins from "./vite/plugins"; |
| | | |
| | | // https://vitejs.dev/config/ |
| | | export default defineConfig(({ mode, command }) => { |
| | | const env = loadEnv(mode, process.cwd()); |
| | | const { VITE_APP_ENV } = env; |
| | |
| | | : env.VITE_BASE_API; |
| | | const javaUrl = |
| | | env.VITE_APP_ENV === "development" |
| | | ? "http://1.15.17.182:9008" |
| | | ? "http://1.15.17.182:9009" |
| | | : env.VITE_JAVA_API; |
| | | |
| | | return { |
| | | define: { |
| | | __BASE_API__: JSON.stringify(javaUrl), |
| | | __BASE_API__: JSON.stringify(javaUrl) |
| | | }, |
| | | base: "/", |
| | | // 部署生产环境和开发环境下的URL。 |
| | | // 默认情况下,vite 会假设你的应用是被部署在一个域名的根路径上 |
| | | // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。 |
| | | base: VITE_APP_ENV === "production" ? "/" : "/", |
| | | plugins: createVitePlugins(env, command === "build"), |
| | | |
| | | resolve: { |
| | | // https://cn.vitejs.dev/config/#resolve-alias |
| | | alias: { |
| | | // 设置路径 |
| | | "~": path.resolve(__dirname, "./"), |
| | | // 设置别名 |
| | | "@": path.resolve(__dirname, "./src"), |
| | | }, |
| | | // https://cn.vitejs.dev/config/#resolve-extensions |
| | | 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, |
| | | // https://vite.dev/config/build-options.html |
| | | sourcemap: command === "build" ? false : "inline", |
| | | 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"; |
| | | } |
| | | }, |
| | | }, |
| | | }, |
| | | }, |
| | | |
| | | // vite 相关配置 |
| | | server: { |
| | | port: 8001, |
| | | host: "0.0.0.0", |
| | | port: 80, |
| | | host: true, |
| | | open: true, |
| | | proxy: { |
| | | // https://cn.vitejs.dev/config/#server-proxy |
| | | "/dev-api": { |
| | | target: baseUrl, |
| | | changeOrigin: true, |
| | | rewrite: (p) => p.replace(/^\/dev-api/, ""), |
| | | }, |
| | | "/v3/api-docs": { |
| | | // springdoc proxy |
| | | "^/v3/api-docs/(.*)": { |
| | | target: baseUrl, |
| | | changeOrigin: true, |
| | | }, |
| | | }, |
| | | }, |
| | | |
| | | css: { |
| | | postcss: { |
| | | plugins: [ |
| | |
| | | postcssPlugin: "internal:charset-removal", |
| | | AtRule: { |
| | | charset: (atRule) => { |
| | | if (atRule.name === "charset") atRule.remove(); |
| | | if (atRule.name === "charset") { |
| | | atRule.remove(); |
| | | } |
| | | }, |
| | | }, |
| | | }, |
| | | ], |
| | | }, |
| | | }, |
| | | |
| | | esbuild: { |
| | | logOverride: { "this-is-undefined-in-esm": "silent" }, |
| | | target: "es2020", |
| | | }, |
| | | }; |
| | | }); |