farmcontrol-ui/vite.config.js
2025-12-27 16:17:38 +00:00

91 lines
2.2 KiB
JavaScript

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
}
})