/// import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; import { VitePWA } from 'vite-plugin-pwa'; import path from 'path'; export default defineConfig({ plugins: [ react(), VitePWA({ registerType: 'prompt', includeAssets: ['icons/favicon-32.png', 'icons/favicon-16.png', 'icons/apple-touch-icon.png'], manifest: { name: 'Backspace', short_name: 'Backspace', description: 'Self-hosted chat platform', display: 'standalone', start_url: '/', theme_color: '#0b0b10', background_color: '#0b0b10', icons: [ { src: '/icons/icon-192.png', sizes: '192x192', type: 'image/png' }, { src: '/icons/icon-512.png', sizes: '512x512', type: 'image/png' }, { src: '/icons/icon-maskable-512.png', sizes: '512x512', type: 'image/png', purpose: 'maskable' }, ], }, workbox: { navigateFallback: '/index.html', navigateFallbackDenylist: [/^\/api/, /^\/ws/, /^\/uploads/], }, }), ], test: { globals: true, environment: 'jsdom', setupFiles: ['./src/test/setup.ts'], css: false, }, resolve: { extensions: ['.tsx', '.ts', '.jsx', '.js', '.mjs', '.mts', '.json'], alias: { '@': path.resolve(__dirname, './src'), }, }, server: { port: 5173, proxy: { '/api': { target: 'http://localhost:3005', changeOrigin: true, }, '/ws': { target: 'ws://localhost:3005', ws: true, }, }, }, });