112 lines
3.0 KiB
JavaScript
112 lines
3.0 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 & related
|
|
if (
|
|
id.includes('node_modules/antd') ||
|
|
id.includes('node_modules/@ant-design') ||
|
|
id.includes('node_modules/rc-') ||
|
|
id.includes('node_modules/antd-style') ||
|
|
id.includes('node_modules/@rc-component') ||
|
|
id.includes('node_modules/dayjs')
|
|
) {
|
|
// Keep charts and their AntV dependencies together in a separate chunk
|
|
if (
|
|
id.includes('node_modules/@ant-design/charts') ||
|
|
id.includes('node_modules/@ant-design/plots') ||
|
|
id.includes('node_modules/@ant-design/graphs') ||
|
|
id.includes('node_modules/@ant-design/charts-util')
|
|
) {
|
|
return 'ant-charts'
|
|
}
|
|
return 'antd'
|
|
}
|
|
|
|
// --- AntV (used by charts)
|
|
if (id.includes('node_modules/@antv')) {
|
|
return 'ant-charts'
|
|
}
|
|
|
|
// --- 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
|
|
}
|
|
})
|