import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; import path from 'node:path'; import fs from 'node:fs'; import { fileURLToPath } from 'node:url'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const rootDir = path.resolve(__dirname, '..'); export default defineConfig({ plugins: [react()], root: '.', publicDir: 'public', optimizeDeps: { include: ['react-ace', 'ace-builds'], }, server: { port: 5174, host: '0.0.0.0', https: (() => { const keyPath = path.join(rootDir, 'ssl', 'code-dev.g4dge7.com.key'); const certPath = path.join(rootDir, 'ssl', 'code-dev.g4dge7.com.crt'); if (fs.existsSync(keyPath) && fs.existsSync(certPath)) { return { key: fs.readFileSync(keyPath), cert: fs.readFileSync(certPath), }; } return undefined; })(), hmr: { host: 'code-dev.g4dge7.com', port: 5174, protocol: 'wss', }, proxy: { '/auth': { target: 'http://localhost:3443', changeOrigin: true, cookieDomainRewrite: { '': 'code-dev.g4dge7.com', }, }, '/api': { target: 'http://localhost:3443', changeOrigin: true, cookieDomainRewrite: { '': 'code-dev.g4dge7.com', }, }, '/socket.io': { target: 'http://localhost:3443', ws: true, }, }, }, build: { outDir: path.join(rootDir, 'dist', 'client'), emptyOutDir: true, rolldownOptions: { output: { codeSplitting: { minSize: 20000, groups: [ { name: 'vendor', test: /[\\/]node_modules[\\/]/, priority: 10, maxSize: 250000, }, ], }, }, }, }, resolve: { alias: { '@': path.join(rootDir, 'src'), }, }, });