import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; import { VitePWA } from 'vite-plugin-pwa'; import { readFileSync } from 'node:fs'; import { fileURLToPath } from 'node:url'; const pkg = JSON.parse(readFileSync(new URL('./package.json', import.meta.url), 'utf-8')); export default defineConfig({ resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), '@core': fileURLToPath(new URL('./src/core', import.meta.url)), }, }, define: { __APP_VERSION__: JSON.stringify(pkg.version), }, plugins: [ react(), VitePWA({ registerType: 'prompt', includeAssets: ['favicon.svg'], manifest: { name: 'Astrolabe', short_name: 'Astrolabe', description: 'A browser-based snippet manager for Vega-Lite visualizations.', theme_color: '#1a1a2e', background_color: '#ffffff', display: 'standalone', icons: [], }, }), ], // Vitest config (shares this file) test: { globals: true, environment: 'happy-dom', include: ['src/**/*.test.{ts,tsx}'], }, } as Parameters[0]);