import path from 'path' import type { PluginOption } from 'vite' import { defineConfig, loadEnv } from 'vite' import vue from '@vitejs/plugin-vue' import { VitePWA } from 'vite-plugin-pwa' import viteImagemin from 'vite-plugin-imagemin' import { createHtmlPlugin } from 'vite-plugin-html' function setupPlugins(env: ImportMetaEnv): PluginOption[] { return [ vue(), viteImagemin({ gifsicle: { optimizationLevel: 7, interlaced: false }, optipng: false, mozjpeg: { quality: 80 }, pngquant: { quality: [0.5, 0.9], speed: 1 }, svgo: { plugins: [ { name: 'removeViewBox' }, { name: 'removeEmptyAttrs', active: false } ] }, webp: false }), env.VITE_GLOB_APP_PWA === 'true' && VitePWA({ injectRegister: 'auto', manifest: { name: 'chatGPT', short_name: 'chatGPT', icons: [ { src: 'pwa-192x192.png', sizes: '192x192', type: 'image/png' }, { src: 'pwa-512x512.png', sizes: '512x512', type: 'image/png' } ] } }) ] } export default defineConfig(env => { const viteEnv = loadEnv(env.mode, process.cwd()) as unknown as ImportMetaEnv return { base: viteEnv.VITE_GLOB_APP_PUBLIC_PATH, resolve: { alias: { '@': path.resolve(process.cwd(), 'src') } }, plugins: [ ...setupPlugins(viteEnv), createHtmlPlugin({ inject: { data: { baseUrl: viteEnv.VITE_GLOB_APP_PUBLIC_PATH } } }) ], server: { host: '0.0.0.0', port: 5004, open: false }, css: { preprocessorOptions: { less: { javascriptEnabled: true, additionalData: '@import "@/styles/common.less";' } } }, build: { outDir: viteEnv.VITE_ORG_MODE === 'true' ? 'dist-org' : 'dist', reportCompressedSize: false, sourcemap: false, commonjsOptions: { ignoreTryCatch: false } } } })