import react from "@vitejs/plugin-react"; import vike from "vike/plugin"; import {defineConfig} from "vite"; import * as child_process from "node:child_process"; import {VitePWA} from 'vite-plugin-pwa'; const APP_FQDN = "open-gsio.seemueller.workers.dev"; export default defineConfig(({command}) => { const customPlugins = [ { name: "sitemap-generator", buildStart(options) { if (command === "build") { child_process.execSync("./scripts/generate_sitemap.js " + APP_FQDN); console.log("Generated Sitemap -> public/sitemap.xml"); child_process.execSync("./scripts/generate_robots_txt.js " + APP_FQDN); console.log("Generated robots.txt -> public/robots.txt"); } }, }, ]; return { mode: "production", plugins: [ ...customPlugins, vike({ prerender: true, }), react(), // PWA plugin saves money on data transfer by caching assets on the client VitePWA({ registerType: 'autoUpdate', workbox: { globPatterns: ['**/*.{js,css,html,ico,png,svg}'] } }) ], server: { port: 3000, proxy: { // proxies requests to worker backend "/api": { target: "http://localhost:3001", }, "/fonts": { target: "http://localhost:3001/fonts", }, }, }, esbuild: { drop: ["console"] }, build: { emitAssets: false, sourcemap: false, minify: "esbuild", target: ["es2020", "edge88", "firefox78", "chrome87", "safari13"], cssMinify: true }, }; });