Add workbox-window as direct dependency and set injectRegister: false to prevent conflict between vite-plugin-pwa and @cloudflare/vite-plugin. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
86 lines
2.3 KiB
TypeScript
86 lines
2.3 KiB
TypeScript
/// <reference types="vitest" />
|
|
|
|
import { cloudflare } from "@cloudflare/vite-plugin";
|
|
import tailwindcss from "@tailwindcss/vite";
|
|
import react from "@vitejs/plugin-react";
|
|
import { visualizer } from "rollup-plugin-visualizer";
|
|
import { defineConfig, type PluginOption } from "vite";
|
|
import { VitePWA } from "vite-plugin-pwa";
|
|
import tsconfigPaths from "vite-tsconfig-paths";
|
|
|
|
// https://vitejs.dev/config/
|
|
export default defineConfig(({ mode }) => {
|
|
const plugins: PluginOption[] = [
|
|
react(),
|
|
visualizer() as PluginOption,
|
|
tailwindcss(),
|
|
tsconfigPaths(),
|
|
];
|
|
|
|
plugins.push(
|
|
VitePWA({
|
|
registerType: "autoUpdate",
|
|
injectRegister: false,
|
|
includeAssets: [
|
|
"public/icon.jpg",
|
|
"public/logo_dark.png",
|
|
"public/logo_white.png",
|
|
],
|
|
manifest: {
|
|
name: mode === "staging" ? "XTablo (Staging)" : "XTablo",
|
|
short_name: "XTablo",
|
|
description: "Collaborative project management for construction teams",
|
|
start_url: "/",
|
|
display: "standalone",
|
|
orientation: "any",
|
|
theme_color: "#1e1b2e",
|
|
background_color: "#1e1b2e",
|
|
icons: [
|
|
{
|
|
src: "pwa-icons/pwa-192x192.png",
|
|
sizes: "192x192",
|
|
type: "image/png",
|
|
},
|
|
{
|
|
src: "pwa-icons/pwa-512x512.png",
|
|
sizes: "512x512",
|
|
type: "image/png",
|
|
},
|
|
{
|
|
src: "pwa-icons/pwa-512x512-maskable.png",
|
|
sizes: "512x512",
|
|
type: "image/png",
|
|
purpose: "maskable",
|
|
},
|
|
],
|
|
},
|
|
workbox: {
|
|
globPatterns: ["**/*.{js,css,html,ico,png,jpg,svg,woff,woff2}"],
|
|
globIgnores: ["**/*.map"],
|
|
},
|
|
})
|
|
);
|
|
|
|
// Only include cloudflare plugin when not in test mode
|
|
if (mode !== "test" && process.env.VITEST !== "true") {
|
|
plugins.push(cloudflare({ inspectorPort: 9230 }));
|
|
}
|
|
|
|
return {
|
|
plugins,
|
|
server: {
|
|
cors: false,
|
|
},
|
|
define: process.env.VITEST
|
|
? {
|
|
"import.meta.env.VITE_SUPABASE_URL": JSON.stringify("https://test.supabase.co"),
|
|
"import.meta.env.VITE_SUPABASE_ANON_KEY": JSON.stringify("test-anon-key"),
|
|
}
|
|
: undefined,
|
|
test: {
|
|
globals: true,
|
|
environment: "jsdom",
|
|
setupFiles: "./src/setupTests.ts",
|
|
},
|
|
};
|
|
});
|