Files
app/vite.config.js
Simon bb2bbb8ff6 feat: mobilni responsivita, testy, klavesove zkratky, drag & drop, univerzalizace
- Mobile responsive CSS (touch targets 44px, iOS anti-zoom, reduced motion)
- Vitest setup s 39 testy (formatters, attendanceHelpers, useTableSort)
- Klavesove zkratky (Shift+? napoveda, Ctrl+S ulozit, navigace)
- Drag & drop pro polozky nabidek (@dnd-kit, SortableRow, useSortableList)
- Univerzalizace: odstraneni BOHA brandingu z UI, emailu, PDF
- Smazany nepotrebne soubory (deploy.sh, AUTH_SYSTEM.md, example_design, .htaccess)
- CORS konfigurovatelny pres env promennou

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 17:33:37 +01:00

94 lines
2.6 KiB
JavaScript

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import { copyFileSync, mkdirSync, readdirSync, existsSync, statSync } from 'fs'
import { execSync } from 'child_process'
import { resolve, join } from 'path'
function copyFolderSync(src, dest) {
mkdirSync(dest, { recursive: true })
const entries = readdirSync(src)
for (const entry of entries) {
const srcPath = join(src, entry)
const destPath = join(dest, entry)
if (statSync(srcPath).isDirectory()) {
copyFolderSync(srcPath, destPath)
} else {
copyFileSync(srcPath, destPath)
}
}
}
function copyFoldersPlugin() {
return {
name: 'copy-folders-plugin',
closeBundle() {
const outDir = resolve(__dirname, 'dist')
const apiSrc = resolve(__dirname, 'api')
const apiDest = resolve(outDir, 'api')
const vendorSrc = resolve(__dirname, 'vendor')
const vendorDest = resolve(outDir, 'vendor')
try {
if (existsSync(apiSrc)) {
copyFolderSync(apiSrc, apiDest)
console.log('✓ API folder copied to dist/api')
}
} catch (err) {
console.error('Error copying API folder:', err)
}
try {
if (existsSync(vendorSrc)) {
execSync('composer install --no-dev --quiet', { cwd: resolve(__dirname) })
copyFolderSync(vendorSrc, vendorDest)
execSync('composer install --quiet', { cwd: resolve(__dirname) })
console.log('✓ Vendor folder copied to dist/vendor (production only)')
}
} catch (err) {
console.error('Error copying vendor folder:', err)
execSync('composer install --quiet', { cwd: resolve(__dirname) })
}
console.log('✓ Build complete!')
}
}
}
export default defineConfig({
plugins: [react(), copyFoldersPlugin()],
test: {
globals: true,
environment: 'jsdom',
setupFiles: './src/test/setup.js',
},
build: {
outDir: 'dist',
emptyOutDir: true,
sourcemap: false,
target: 'es2020',
rollupOptions: {
output: {
manualChunks: {
'vendor-react': ['react', 'react-dom', 'react-router-dom'],
'vendor-animation': ['framer-motion'],
'vendor-utils': ['date-fns', 'dompurify']
}
}
}
},
server: {
port: 3000,
host: true,
proxy: {
'/api': {
target: 'http://localhost:8000',
changeOrigin: true,
secure: false,
cookieDomainRewrite: 'localhost',
cookiePathRewrite: '/'
}
}
}
})