Files
windows-user-space-emulator/page/vite.config.ts
2025-09-07 18:01:46 +02:00

69 lines
1.6 KiB
TypeScript

import path from "path";
import tailwindcss from "@tailwindcss/vite";
import { defineConfig } from "vite";
import { VitePWA } from "vite-plugin-pwa";
import react from "@vitejs/plugin-react";
import { RuntimeCaching } from "workbox-build";
const mb = 1024 ** 2;
function generateExternalCache(
pattern: string | RegExp,
name: string,
): RuntimeCaching {
return {
urlPattern: pattern,
handler: "CacheFirst",
options: {
cacheName: name,
expiration: {
maxEntries: 10,
maxAgeSeconds: 60 * 60 * 24 * 365, // <== 365 days
},
cacheableResponse: {
statuses: [0, 200],
},
},
};
}
// https://vite.dev/config/
export default defineConfig({
plugins: [
react(),
tailwindcss(),
VitePWA({
registerType: "autoUpdate",
manifest: {
theme_color: "#0279E8",
background_color: "#141416",
},
workbox: {
maximumFileSizeToCacheInBytes: 100 * mb,
cleanupOutdatedCaches: true,
globPatterns: ["**/*.{js,css,html,woff,woff2,wasm}"],
globIgnores: ["root.zip"],
navigateFallbackDenylist: [/^\/root\.zip$/],
runtimeCaching: [
generateExternalCache(
/^https:\/\/momo5502\.com\/.*/i,
"momo5502-cache",
),
generateExternalCache(
/^https:\/\/img\.youtube\.com\/.*/i,
"youtube-img-cache",
),
],
},
}),
],
resolve: {
alias: {
"@": path.resolve(__dirname, "./src"),
},
},
define: {
"import.meta.env.VITE_BUILD_TIME": JSON.stringify(Date.now()),
},
});