/// import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' import tailwindcss from '@tailwindcss/vite' import { sentryVitePlugin } from '@sentry/vite-plugin' import path from 'path' // https://vite.dev/config/ export default defineConfig({ plugins: [ tailwindcss(), react(), sentryVitePlugin({ org: process.env.SENTRY_ORG, project: process.env.SENTRY_PROJECT, authToken: process.env.SENTRY_AUTH_TOKEN, silent: !process.env.SENTRY_AUTH_TOKEN, // Don't error in local dev }), ], server: { host: '0.0.0.0', allowedHosts: ['docker-01', '.ts.net', 'localhost'], watch: { usePolling: true, }, }, resolve: { alias: { '@': path.resolve(__dirname, './src'), }, }, test: { globals: true, environment: 'jsdom', setupFiles: './src/test/setup.ts', include: ['src/**/*.{test,spec}.{ts,tsx}'], coverage: { provider: 'v8', reporter: ['text', 'json-summary', 'html'], include: ['src/**/*.{ts,tsx}'], exclude: [ 'src/test/**', 'src/types/**', 'src/**/*.d.ts', 'src/instrument.ts', 'src/main.tsx', ], }, }, build: { sourcemap: 'hidden', // Generate source maps but don't expose them publicly rollupOptions: { output: { manualChunks: { // React core and routing 'react-vendor': ['react', 'react-dom', 'react-router-dom'], // Markdown rendering 'markdown-vendor': ['react-markdown'], // State management 'state-vendor': ['zustand', 'immer', 'zundo'], // Icons 'icons-vendor': ['lucide-react'], // Utilities and UI libs 'utils-vendor': [ 'axios', 'clsx', 'tailwind-merge', 'class-variance-authority', 'date-fns', 'sonner', ], // Drag and drop 'dnd-vendor': [ '@dnd-kit/core', '@dnd-kit/sortable', '@dnd-kit/utilities', ], }, }, }, chunkSizeWarningLimit: 500, }, })