import { fileURLToPath, URL } from "node:url"; import { defineConfig } from "vite"; import vue from "@vitejs/plugin-vue"; import vueJsx from "@vitejs/plugin-vue-jsx"; import Components from "unplugin-vue-components/vite"; import { ElementPlusResolver } from "unplugin-vue-components/resolvers"; import AutoImport from "unplugin-auto-import/vite"; import { createSvgIconsPlugin } from "vite-plugin-svg-icons"; import viteCompression from "vite-plugin-compression"; import Pages from "vite-plugin-pages"; import Layouts from "vite-plugin-vue-layouts"; import { VitePWA } from "vite-plugin-pwa"; import vueSetupExtend from "vite-plugin-vue-setup-extend"; import path from "path"; // https://vitejs.dev/config/ export default defineConfig({ plugins: [ vue(), viteCompression(), vueJsx(), AutoImport({ dts: "src/auto-imports.d.ts", imports: ["vue"] }), createSvgIconsPlugin({ // 指定需要缓存的图标文件夹 iconDirs: [path.resolve(process.cwd(), "src/assets/icons")], // 指定symbolId格式 symbolId: "icon-[dir]-[name]", /** * 自定义插入位置 * @default: body-last */ // inject?: 'body-last' | 'body-first' /** * custom dom id * @default: __svg__icons__dom__ */ // customDomId: '__svg__icons__dom__', }), Components({ /* options */ resolvers: [ElementPlusResolver()], }), vueSetupExtend(), Pages({ // extendRoute(route, parent) { // console.log("路由监听", route); // if (route.path === "/user/login") { // // Index is unauthenticated. // // 不进行身份认证的路由 // return route; // } // // Augment the route with meta that indicates that the route requires authentication. // // 使用 meta 扩充路由,指示路由需要身份验证 // return { // ...route, // meta: { auth: true }, // }; // }, }), Layouts({ defaultLayout: "default/index" }), VitePWA({ includeAssets: ["favicon.svg"], manifest: false, registerType: "autoUpdate", workbox: { runtimeCaching: [ { urlPattern: /someInterface/i, // 接口缓存 此处填你想缓存的接口正则匹配 handler: "CacheFirst", options: { cacheName: "interface-cache", }, }, { urlPattern: /(.*?)\.(js|css|ts)/, // js /css /ts静态资源缓存 handler: "CacheFirst", options: { cacheName: "js-css-cache", }, }, { urlPattern: /(.*?)\.(png|jpe?g|svg|gif|bmp|psd|tiff|tga|eps)/, // 图片缓存 handler: "CacheFirst", options: { cacheName: "image-cache", }, }, ], }, }), ], resolve: { alias: { "@": fileURLToPath(new URL("./src", import.meta.url)), }, }, server: { hmr: true, open: true, port: 6714, }, });