Files
opsxshell/vite.config.ts

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'],
},
})