import { getPluginsList } from "./build/plugins"; import { include, exclude } from "./build/optimize"; import { type UserConfigExport, type ConfigEnv, loadEnv } from "vite"; import { root, alias, wrapperEnv, pathResolve, __APP_INFO__ } from "./build/utils"; export default ({ mode }: ConfigEnv): UserConfigExport => { const { VITE_CDN, VITE_PORT, VITE_COMPRESSION, VITE_PUBLIC_PATH } = wrapperEnv(loadEnv(mode, root)); return { base: VITE_PUBLIC_PATH, root, resolve: { alias }, // 服务端渲染 server: { port: 8888, host: "0.0.0.0", proxy: { "/login": { target: "http://localhost:8080/admin", changeOrigin: true, rewrite: path => path.replace(/^\/login/, "/login") }, "/user": { target: "http://localhost:8080/admin", changeOrigin: true, rewrite: path => path.replace(/^\/user/, "/user") }, "/role": { target: "http://localhost:8080/admin", changeOrigin: true, rewrite: path => path.replace(/^\/role/, "/role") }, "/permission": { target: "http://localhost:8080/admin", changeOrigin: true, rewrite: path => path.replace(/^\/permission/, "/permission") }, "/users": { target: "http://localhost:8080/admin", changeOrigin: true, rewrite: path => path.replace(/^\/users/, "/users") }, "/shops": { target: "http://localhost:8080/admin", changeOrigin: true, rewrite: path => path.replace(/^\/shops/, "/shops") }, "/devices": { target: "http://localhost:8080/admin", changeOrigin: true, rewrite: path => path.replace(/^\/devices/, "/devices") }, "/order": { target: "http://localhost:8080/admin", changeOrigin: true, rewrite: path => path.replace(/^\/order/, "/order") }, "/products": { target: "http://localhost:8080/admin", changeOrigin: true, rewrite: path => path.replace(/^\/products/, "/products") }, "/inventory": { target: "http://localhost:8080/admin", changeOrigin: true, rewrite: path => path.replace(/^\/inventory/, "/inventory") }, "/marketing": { target: "http://localhost:8080/admin", changeOrigin: true, rewrite: path => path.replace(/^\/marketing/, "/marketing") }, "/checkin": { target: "http://localhost:8080/admin", changeOrigin: true, rewrite: path => path.replace(/^\/checkin/, "/checkin") }, "/announcement": { target: "http://localhost:8080/admin", changeOrigin: true, rewrite: path => path.replace(/^\/announcement/, "/announcement") }, "/operation-log": { target: "http://localhost:8080/admin", changeOrigin: true, rewrite: path => path.replace(/^\/operation-log/, "/operation-log") }, "/sync": { target: "http://localhost:8080/admin", changeOrigin: true, rewrite: path => path.replace(/^\/sync/, "/sync") }, "/new-product-apply": { target: "http://localhost:8080/admin", changeOrigin: true, rewrite: path => path.replace(/^\/new-product-apply/, "/new-product-apply") }, "/dashboard": { target: "http://localhost:8080/admin", changeOrigin: true, rewrite: path => path.replace(/^\/dashboard/, "/dashboard") }, "/dict": { target: "http://localhost:8080/admin", changeOrigin: true, rewrite: path => path.replace(/^\/dict/, "/dict") }, "/timed-discount": { target: "http://localhost:8080/admin", changeOrigin: true, rewrite: path => path.replace(/^\/timed-discount/, "/timed-discount") } }, // 预热文件以提前转换和缓存结果,降低启动期间的初始页面加载时长并防止转换瀑布 warmup: { clientFiles: ["./index.html", "./src/{views,components}/*"] } }, plugins: getPluginsList(VITE_CDN, VITE_COMPRESSION), // https://cn.vitejs.dev/config/dep-optimization-options.html#dep-optimization-options optimizeDeps: { include, exclude }, build: { // https://cn.vitejs.dev/guide/build.html#browser-compatibility target: "es2015", sourcemap: false, // 消除打包大小超过500kb警告 chunkSizeWarningLimit: 4000, rollupOptions: { input: { index: pathResolve("./index.html", import.meta.url) }, // 静态资源分类打包 output: { chunkFileNames: "static/js/[name]-[hash].js", entryFileNames: "static/js/[name]-[hash].js", assetFileNames: "static/[ext]/[name]-[hash].[ext]" } } }, define: { __INTLIFY_PROD_DEVTOOLS__: false, __APP_INFO__: JSON.stringify(__APP_INFO__) } }; };