60 lines
2.3 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()],
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
}
}
})