Files
EvoFirewall/apps/web/vite.config.ts
T
Denozordec 454c5009d1 fix(web): error/404 экраны, сплит бандла и bulk-мутации
- RouteErrorComponent/RouteNotFoundComponent на root-маршруте (RU-копирайт,
  retry + переход на главную; redirect в портал не мигает ошибкой)
- settings: форма инициализируется один раз — фоновый refetch больше не
  затирает ввод пользователя
- code splitting: autoCodeSplitting роутов + manualChunks (react/router/query/
  charts/dnd); вход ~507KB вместо единого чанка 1.57MB, recharts (330KB) грузится
  лениво; версия recharts в packages/ui выровнена с apps/web (3.8.0)
- bulk-эндпоинты: POST /agents/approve-bulk и PUT /policy-sets/:id/agents —
  назначение набора агентам одним запросом вместо N×(GET+PUT)
- оптимистичные обновления с rollback: approve, approve-bulk, удаление агента,
  переключение набора
- тесты bulk-операций (45 passed)
2026-09-20 19:12:58 +07:00

76 lines
2.0 KiB
TypeScript

import path from 'path'
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import tailwindcss from '@tailwindcss/vite'
import { TanStackRouterVite } from '@tanstack/router-plugin/vite'
export default defineConfig({
plugins: [
TanStackRouterVite({
routesDirectory: './src/routes',
target: 'react',
autoCodeSplitting: true,
}),
react(),
tailwindcss(),
],
build: {
rollupOptions: {
output: {
manualChunks(id) {
if (
/node_modules[\\/](recharts|victory-vendor|d3-[a-z-]+|react-smooth|recharts-scale)[\\/]/.test(
id,
)
) {
return 'charts'
}
if (/node_modules[\\/]@dnd-kit[\\/]/.test(id)) return 'dnd'
if (
/node_modules[\\/](react|react-dom|scheduler|clsx|tailwind-merge)[\\/]/.test(
id,
)
) {
return 'react'
}
if (/node_modules[\\/]@tanstack[\\/]react-router[\\/]/.test(id)) {
return 'router'
}
if (/node_modules[\\/]@tanstack[\\/]react-query[\\/]/.test(id)) {
return 'query'
}
return undefined
},
},
},
},
resolve: {
alias: {
'@': path.resolve(__dirname, './src'),
'@evofw/shared': path.resolve(
__dirname,
'../../packages/shared/src/index.ts',
),
'@evofw/ui/components': path.resolve(
__dirname,
'../../packages/ui/src/components',
),
'@evofw/ui/hooks': path.resolve(
__dirname,
'../../packages/ui/src/hooks',
),
'@evofw/ui/lib': path.resolve(__dirname, '../../packages/ui/src/lib'),
},
},
server: {
port: 5177,
fs: { allow: [path.resolve(__dirname, '../..')] },
proxy: {
'/api': 'http://localhost:8080',
'/health': 'http://localhost:8080',
'/ready': 'http://localhost:8080',
'/v1': 'http://localhost:8080',
},
},
})