import { fileURLToPath, URL } from 'node:url' import { defineConfig, loadEnv } from 'vite' import vue from '@vitejs/plugin-vue' import { VitePWA } from 'vite-plugin-pwa' export default defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd(), '') const publicAppUrl = (env.VITE_PUBLIC_APP_URL || '').trim().replace(/\/+$/, '') const manifestIdentity = publicAppUrl !== '' ? { id: `${publicAppUrl}/`, scope: '/' } : {} return { plugins: [ vue(), VitePWA({ registerType: 'autoUpdate', includeAssets: ['favicon.svg'], manifest: { name: 'Todo', short_name: 'Todo', description: 'NAS용 Todo 웹앱', theme_color: '#f2f2f7', background_color: '#f2f2f7', display: 'standalone', start_url: '/', lang: 'ko', icons: [ { src: '/favicon.svg', sizes: 'any', type: 'image/svg+xml', purpose: 'any' } ], ...manifestIdentity }, workbox: { globPatterns: ['**/*.{js,css,html,ico,svg,woff2}'] } }) ], resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)) } } } })