import react from '@vitejs/plugin-react' import { defineConfig } from 'vite' import eslintPlugin from 'vite-plugin-eslint' import svgr from 'vite-plugin-svgr' import svgo from 'vite-plugin-svgo' export default defineConfig({ base: '/', plugins: [react(), svgo(), svgr(), eslintPlugin()], build: { outDir: 'build', chunkSizeWarningLimit: 1500, rollupOptions: { output: { manualChunks(id) { // --- CodeMirror if (id.includes('node_modules/@codemirror')) { return 'codemirror' } // --- Lezer if (id.includes('node_modules/@lezer')) { return 'lezer' } // --- Ant Design if (id.includes('node_modules/antd')) { return 'antd' } if (id.includes('node_modules/@ant-design/icons')) { return 'ant-icons' } if (id.includes('node_modules/@ant-design/charts')) { return 'ant-charts' } // --- AntV if (id.includes('node_modules/@antv')) { return 'antv' } // --- Three.js if (id.includes('node_modules/three')) { return 'three' } // --- GCode Preview if (id.includes('node_modules/gcode-preview')) { return 'gcode-preview' } // --- Online 3D Viewer if (id.includes('node_modules/online-3d-viewer')) { return 'online-3d-viewer' } // --- Lodash if (id.includes('node_modules/lodash')) { return 'lodash' } // --- tsparticles if ( id.includes('node_modules/@tsparticles') || id.includes('node_modules/tsparticles') ) { return 'tsparticles' } // --- React vendor if ( id.includes('node_modules/react') || id.includes('node_modules/react-dom') || id.includes('node_modules/react-router-dom') ) { return 'react-vendor' } } } } }, server: { allowedHosts: ['dev.tombutcher.work'], host: '0.0.0.0', port: 5173, open: false } })