farmcontrol-ui/vite.config.js
2025-12-27 16:35:48 +00:00

100 lines
2.4 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'
import path from 'path'
import { fileURLToPath } from 'url'
const __filename = fileURLToPath(import.meta.url)
const __dirname = path.dirname(__filename)
export default defineConfig({
base: '/',
resolve: {
alias: {
three: path.resolve(__dirname, 'node_modules/three')
}
},
optimizeDeps: {
include: ['@ant-design/icons']
},
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/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
}
})