import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import { VitePWA } from 'vite-plugin-pwa' import { resolve } from 'path' // Добавляем импорт модуля path export default defineConfig({ plugins: [ vue(), VitePWA({ // Опции регистрации сервис-воркера registerType: 'autoUpdate', // 'autoUpdate' или 'prompt' для обновления // Включаем генерацию манифеста и сервис-воркера injectRegister: 'auto', // Убираем это объявление, так как оно дублируется // manifest: true, strategies: 'generateSW', // Опции для генерации сервис-воркера manifestFilename: 'manifest.webmanifest', filename: 'sw.js', // Конфигурация Workbox (для сервис-воркера) workbox: { globPatterns: ['**/*.{js,css,html,ico,png,svg,json,vue,txt,woff2}'], // Включаем больше типов файлов для кеширования cleanupOutdatedCaches: true, // Автоматически удалять старые кеши // runtimeCaching: [ // Пример для кеширования API запросов (пока не нужно, но для будущего) // { // urlPattern: /^https:\/\/api\.example\.com\/.*/i, // handler: 'NetworkFirst', // options: { // cacheName: 'api-cache', // expiration: { // maxEntries: 10, // maxAgeSeconds: 60 * 60 * 24 * 365 // 1 год // }, // cacheableResponse: { // statuses: [0, 200] // } // } // } // ] }, // Файлы для предварительного кеширования (кроме тех, что попадут через globPatterns) // Это важно для основных иконок PWA includeAssets: [ 'favicon.svg', 'apple-touch-icon.png', 'pwa-192x192.png', // Добавляем PWA иконки 'pwa-512x512.png' // Если используешь маскируемую иконку // Убедись, что все эти файлы есть в папке /public ], // Конфигурация манифеста PWA manifest: { id: '/', // ID приложения (можно оставить пустым) name: 'DatingApp', // Замени на свое название short_name: 'DatingApp', // Короткое имя description: 'Find your perfect match with our PWA Dating App!', // Описание theme_color: '#ff69b4', // Основной цвет темы (пример) background_color: '#ffffff', // Цвет фона для сплэш-экрана на Android display: 'standalone', // Или 'fullscreen', 'minimal-ui' scope: '/', start_url: '/', orientation: 'portrait-primary', // Предпочтительная ориентация icons: [ { src: 'pwa-192x192.png', // Путь относительно папки public sizes: '192x192', type: 'image/png' }, { src: 'pwa-512x512.png', // Путь относительно папки public sizes: '512x512', type: 'image/png' }, { src: 'pwa-512x512.png', // Маскируемая иконка sizes: '512x512', type: 'image/png', purpose: 'any maskable' // 'any' или 'maskable' или 'any maskable' } // Ты можешь добавить больше размеров иконок, если нужно ] }, // Опции для разработчика (могут быть полезны) devOptions: { enabled: true, // Включает генерацию SW и манифеста в режиме разработки (для тестирования) type: 'module', // Тип генерируемого сервис-воркера в режиме разработки } }) ], // Добавляем конфигурацию для алиасов resolve: { alias: { '@': resolve(__dirname, 'src'), // Алиас @ указывает на директорию src }, }, // Конфигурация сервера разработки server: { host: '0.0.0.0', port: 5173, // Убедитесь, что этот порт используется или измените при необходимости proxy: { // Проксируем запросы /api на ваш бэкенд сервер '/api': { target: 'http://localhost:5000', // Адрес вашего бэкенд сервера changeOrigin: true, // Необходимо для виртуальных хостов }, // Проксируем WebSocket соединения для Socket.IO '/socket.io': { target: 'http://localhost:5000', // Адрес вашего Socket.IO сервера ws: true, // Включаем проксирование WebSocket changeOrigin: true, } } }, // Другие настройки Vite, если они есть (например, server, resolve.alias и т.д.) build: { // Гарантируем, что сервис-воркер включен sourcemap: true, assetsInlineLimit: 0, } })