import react from '@vitejs/plugin-react'; import { existsSync } from 'fs'; import { resolve } from 'path'; import { defineConfig } from 'vite'; const legacyRendererRoot = resolve(__dirname, '..', 'renderer'); const currentRendererRoot = resolve(__dirname, '..', 'Nitro_Render_V3'); const rendererRoot = existsSync(currentRendererRoot) ? currentRendererRoot : legacyRendererRoot; export default defineConfig({ plugins: [ react() ], server: { fs: { allow: [ resolve(__dirname), rendererRoot, ] }, proxy: { '/api': { target: process.env.AUTH_PROXY_TARGET || 'http://192.168.1.52:2096/', changeOrigin: true, ws: true, }, '/nitro-sec': { target: process.env.NITRO_PROXY_TARGET || 'http://192.168.1.52:2096/', changeOrigin: true, ws: true, } } }, resolve: { tsconfigPaths: true, alias: { '@': resolve(__dirname, 'src'), '@layout': resolve(__dirname, 'src/layout'), '~': resolve(__dirname, 'node_modules'), '@nitrots/api': resolve(rendererRoot, 'packages/api/src/index.ts'), '@nitrots/assets': resolve(rendererRoot, 'packages/assets/src/index.ts'), '@nitrots/avatar': resolve(rendererRoot, 'packages/avatar/src/index.ts'), '@nitrots/camera': resolve(rendererRoot, 'packages/camera/src/index.ts'), '@nitrots/communication': resolve(rendererRoot, 'packages/communication/src/index.ts'), '@nitrots/configuration': resolve(rendererRoot, 'packages/configuration/src/index.ts'), '@nitrots/events': resolve(rendererRoot, 'packages/events/src/index.ts'), '@nitrots/localization': resolve(rendererRoot, 'packages/localization/src/index.ts'), '@nitrots/room': resolve(rendererRoot, 'packages/room/src/index.ts'), '@nitrots/session': resolve(rendererRoot, 'packages/session/src/index.ts'), '@nitrots/sound': resolve(rendererRoot, 'packages/sound/src/index.ts'), '@nitrots/utils/src': resolve(rendererRoot, 'packages/utils/src'), '@nitrots/utils': resolve(rendererRoot, 'packages/utils/src/index.ts'), 'pixi.js': resolve(rendererRoot, 'node_modules/pixi.js'), 'pixi-filters': resolve(rendererRoot, 'node_modules/pixi-filters'), 'howler': resolve(rendererRoot, 'node_modules/howler'), } }, build: { assetsInlineLimit: 4096, chunkSizeWarningLimit: 200000, rollupOptions: { input: resolve(__dirname, 'index.html'), output: { inlineDynamicImports: true, entryFileNames: 'assets/app.js', chunkFileNames: 'assets/app.js', assetFileNames: assetInfo => assetInfo.name && assetInfo.name.endsWith('.css') ? 'assets/app.css' : 'src/assets/[name]-[hash].[ext]' } } } });