xtablo-source/apps/main/vite.config.ts

87 lines
2.3 KiB
TypeScript
Raw Normal View History

2025-10-23 09:54:45 +00:00
/// <reference types="vitest" />
2025-10-23 19:36:21 +00:00
import { cloudflare } from "@cloudflare/vite-plugin";
2025-10-23 09:54:45 +00:00
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";
2025-10-23 09:54:45 +00:00
import tsconfigPaths from "vite-tsconfig-paths";
// https://vitejs.dev/config/
2025-10-24 06:22:50 +00:00
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"],
},
})
);
2025-10-24 06:22:50 +00:00
// Only include cloudflare plugin when not in test mode
if (mode !== "test" && process.env.VITEST !== "true") {
2025-10-24 15:06:42 +00:00
plugins.push(cloudflare({ inspectorPort: 9230 }));
2025-10-24 06:22:50 +00:00
}
return {
plugins,
server: {
cors: false,
},
2025-10-24 06:36:20 +00:00
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,
2025-10-24 06:22:50 +00:00
test: {
globals: true,
environment: "jsdom",
setupFiles: "./src/setupTests.ts",
},
};
2025-10-23 09:54:45 +00:00
});