53 lines
1.5 KiB
TypeScript
53 lines
1.5 KiB
TypeScript
import { defineConfig } from 'vite'
|
|
import react from '@vitejs/plugin-react'
|
|
import path from 'path'
|
|
|
|
// https://vitejs.dev/config/
|
|
export default defineConfig({
|
|
plugins: [react()],
|
|
base: './',
|
|
build: {
|
|
outDir: 'dist',
|
|
emptyOutDir: true,
|
|
sourcemap: true,
|
|
cssCodeSplit: true,
|
|
rollupOptions: {
|
|
output: {
|
|
manualChunks: {
|
|
'vendor-core': ['react', 'react-dom', 'react-router-dom'],
|
|
'vendor-xterm': ['@xterm/xterm', '@xterm/addon-fit', '@xterm/addon-search', '@xterm/addon-webgl'],
|
|
'vendor-utils': ['zustand', 'lucide-react'],
|
|
},
|
|
chunkFileNames: 'assets/js/[name]-[hash].js',
|
|
entryFileNames: 'assets/js/[name]-[hash].js',
|
|
assetFileNames: (assetInfo) => {
|
|
const info = assetInfo.name || ''
|
|
if (/\.(png|jpe?g|gif|svg|webp|ico)$/i.test(info)) {
|
|
return 'assets/images/[name]-[hash][extname]'
|
|
}
|
|
if (/\.css$/i.test(info)) {
|
|
return 'assets/css/[name]-[hash][extname]'
|
|
}
|
|
return 'assets/[name]-[hash][extname]'
|
|
},
|
|
},
|
|
},
|
|
assetsInlineLimit: 4096,
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
'@': path.resolve(__dirname, './src'),
|
|
'@shared': path.resolve(__dirname, './shared'),
|
|
},
|
|
},
|
|
server: {
|
|
// Keep the desktop renderer isolated from the opsx-web dev server on 5173.
|
|
host: '127.0.0.1',
|
|
port: 5175,
|
|
strictPort: true,
|
|
},
|
|
optimizeDeps: {
|
|
include: ['@xterm/xterm', '@xterm/addon-fit', '@xterm/addon-search', '@xterm/addon-webgl', 'react', 'react-dom'],
|
|
},
|
|
})
|