Reflex/vite.config.js

129 lines
5.7 KiB
JavaScript
Raw Permalink Normal View History

2025-05-21 22:13:09 +07:00
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { VitePWA } from 'vite-plugin-pwa'
import { resolve } from 'path' // Добавляем импорт модуля path
export default defineConfig({
2025-05-26 00:03:58 +07:00
// Базовый путь для всех относительных URL
base: '/',
2025-05-21 22:13:09 +07:00
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,
}
})