import { defineConfig } from 'vite'; import laravel from 'laravel-vite-plugin'; import react from '@vitejs/plugin-react'; import { VitePWA } from 'vite-plugin-pwa'; export default defineConfig({ plugins: [ laravel({ input: ['resources/css/app.css', 'resources/js/app.tsx'], refresh: true, }), react(), VitePWA({ registerType: 'autoUpdate', injectRegister: 'script', manifest: false, // served via Laravel route workbox: { globPatterns: ['**/*.{js,css,html,ico,png,svg,webp}'], navigateFallback: null, runtimeCaching: [ { urlPattern: /^https?:\/\/.*\/(dashboard|listings|analytics|theme|settings)/, handler: 'NetworkFirst', options: { cacheName: 'inertia-pages', expiration: { maxEntries: 20, maxAgeSeconds: 60 * 60 }, networkTimeoutSeconds: 5, }, }, { urlPattern: /\.(jpg|jpeg|png|webp)$/, handler: 'CacheFirst', options: { cacheName: 'listing-images', expiration: { maxEntries: 100, maxAgeSeconds: 60 * 60 * 24 * 7 }, }, }, ], }, }), ], resolve: { alias: { '@': '/resources/js' }, }, });