127 lines
5.6 KiB
JavaScript
127 lines
5.6 KiB
JavaScript
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,
|
|
}
|
|
}) |