import { defineConfig } from "vite"; import react from "@vitejs/plugin-react"; import { VitePWA } from "vite-plugin-pwa"; import { nodePolyfills } from "vite-plugin-node-polyfills"; export default defineConfig({ define: { global: "globalThis", }, plugins: [ react(), nodePolyfills({ include: ["process", "events", "stream", "buffer", "util"], }), VitePWA({ strategies: "injectManifest", srcDir: "src", filename: "sw.ts", registerType: "autoUpdate", includeAssets: ["favicon.svg"], injectManifest: { globPatterns: ["**/*.{js,css,html,ico,png,svg,woff2}"], }, manifest: { name: "AnyDrop", short_name: "AnyDrop", description: "Partage de fichiers instantané, peer-to-peer, sans compte", theme_color: "#6366f1", background_color: "#0f172a", display: "standalone", start_url: "/", icons: [ { src: "/icon-192.png", sizes: "192x192", type: "image/png", }, { src: "/icon-512.png", sizes: "512x512", type: "image/png", }, ], share_target: { action: "/share", method: "POST", enctype: "multipart/form-data", params: { title: "title", text: "text", url: "url", files: [ { name: "files", accept: [ "image/*", "video/*", "audio/*", "application/pdf", "application/zip", "application/x-zip-compressed", "text/*", "application/msword", "application/vnd.openxmlformats-officedocument.*", "application/vnd.ms-excel", "application/vnd.ms-powerpoint", ".pdf", ".zip", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".txt", ".csv", ".json", ".xml", ".mp3", ".mp4", ".mov", ".avi", ".mkv", ".webm", ".png", ".jpg", ".jpeg", ".gif", ".webp", ".heic", ".heif", ".svg", ], }, ], }, } as any, }, devOptions: { enabled: false, }, }), ], server: { port: 5173, host: true, proxy: { "/api": { target: "http://localhost:3001", changeOrigin: false, }, }, }, });