import {defineConfig, loadEnv} from 'vite' import vue from '@vitejs/plugin-vue' import path from 'path' import AutoImport from 'unplugin-auto-import/vite' import Components from 'unplugin-vue-components/vite' import {ElementPlusResolver} from 'unplugin-vue-components/resolvers' import {VitePWA} from 'vite-plugin-pwa'; export default defineConfig(({mode}) => { const env = loadEnv(mode, process.cwd(), 'VITE') return { server: { host: true, port: 3001, hmr: true, }, base: env.VITE_STATIC_URL || '/', plugins: [vue(), VitePWA({ registerType: 'autoUpdate', // 配置 service worker 的注册方式 includeAssets: ['favicon.svg', 'robots.txt'], // 指定需要包含的静态资源 manifest: { name: env.VITE_PWA_NAME, short_name: env.VITE_PWA_NAME, background_color: '#FFFFFF', theme_color: '#FFFFFF', icons: [ { src: 'mail-pwa.png',//像素尺寸一定要对应 sizes: '192x192', type: 'image/png', } ], }, workbox: { navigateFallbackDenylist: [/^\/api\/init/], disableDevLogs: true, globPatterns: [], runtimeCaching: [], navigateFallback: null, cleanupOutdatedCaches: true, } }), AutoImport({ resolvers: [ElementPlusResolver()], }), Components({ resolvers: [ElementPlusResolver()], }) ], resolve: { alias: { '@': path.resolve(__dirname, 'src') } }, build: { target: 'es2022', outDir: env.VITE_OUT_DIR || 'dist', emptyOutDir: true, assetsInclude: ['**/*.json'] } } })