import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' import path from 'path' // https://vitejs.dev/config/ export default defineConfig({ plugins: [react()], optimizeDeps: { include: [ 'react-icons', 'react-icons/si', 'react-icons/md', 'react-icons/fa', 'react-icons/fa6', 'react-icons/bs' ] }, resolve: { alias: { '@': path.resolve(__dirname, './src'), '@shared': process.env.DOCKER_ENV ? '/shared' : path.resolve(__dirname, '../../shared'), '@avanzacast/shared-hooks': process.env.DOCKER_ENV ? '/shared/hooks' : path.resolve(__dirname, '../../shared/hooks'), '@avanzacast/shared-utils': process.env.DOCKER_ENV ? '/shared/utils' : path.resolve(__dirname, '../../shared/utils'), '@avanzacast/shared-types': process.env.DOCKER_ENV ? '/shared/types' : path.resolve(__dirname, '../../shared/types'), '@avanzacast/shared-config': process.env.DOCKER_ENV ? '/shared/config' : path.resolve(__dirname, '../../shared/config') , // Ensure react-icons subpackages imported from /shared resolve to the // node_modules installed in the image. 'react-icons': process.env.DOCKER_ENV ? '/app/node_modules/react-icons' : 'react-icons', 'react-icons/si': process.env.DOCKER_ENV ? '/app/node_modules/react-icons/si' : 'react-icons/si', 'react-icons/md': process.env.DOCKER_ENV ? '/app/node_modules/react-icons/md' : 'react-icons/md', 'react-icons/fa': process.env.DOCKER_ENV ? '/app/node_modules/react-icons/fa' : 'react-icons/fa', 'react-icons/fa6': process.env.DOCKER_ENV ? '/app/node_modules/react-icons/fa6' : 'react-icons/fa6', 'react-icons/bs': process.env.DOCKER_ENV ? '/app/node_modules/react-icons/bs' : 'react-icons/bs' } }, server: { port: 5175, host: true, allowedHosts: [ 'localhost', '.easypanel.host', 'avanzacast-broadcastpanel.bfzqqk.easypanel.host' ], fs: { // Allow serving files from the shared folder when mounted in Docker allow: [ path.resolve(__dirname), process.env.DOCKER_ENV ? '/shared' : path.resolve(__dirname, '../../shared') ] , // Disable strict fs checking so imports from outside project root work strict: false }, watch: { usePolling: true } } })