Files
Genarrative/vite.config.ts

131 lines
3.4 KiB
TypeScript

import path from 'node:path';
import tailwindcss from '@tailwindcss/vite';
import react from '@vitejs/plugin-react';
import {defineConfig, loadEnv} from 'vite';
export default defineConfig(({mode}) => {
const env = loadEnv(mode, __dirname, '');
const ignoredWatchGlobs = [
'**/dist/**',
'**/dist_check/**',
'**/dist_check_final/**',
'**/dist_check_monster_position/**',
'**/temp*build*/**',
'**/public/generated-character-drafts/**',
'**/public/generated-characters/**',
'**/public/generated-custom-world-scenes/**',
'**/public/generated-qwen-sprites/**',
'**/backend-rewrite-tasklist/**',
'**/docs/**',
'**/jenkins/**',
'**/media/**',
'**/scripts/**',
'**/server-rs/**',
'**/*.test.ts',
'**/*.test.tsx',
'**/*.spec.ts',
'**/*.spec.tsx',
];
const rustServerTarget =
env.RUST_SERVER_TARGET ||
env.GENARRATIVE_API_TARGET ||
`http://127.0.0.1:${env.GENARRATIVE_API_PORT || '3100'}`;
const runtimeServerTarget =
env.GENARRATIVE_RUNTIME_SERVER_TARGET || rustServerTarget;
const adminWebTarget =
env.ADMIN_WEB_TARGET ||
`http://127.0.0.1:${env.ADMIN_WEB_PORT || '3102'}`;
return {
root: __dirname,
envDir: __dirname,
plugins: [
react(),
tailwindcss(),
],
define: {
'process.env.GEMINI_API_KEY': JSON.stringify(env.GEMINI_API_KEY),
},
resolve: {
alias: {
'@': path.resolve(__dirname, '.'),
},
},
optimizeDeps: {
// Only crawl the real app entry so temporary build folders do not get
// treated as extra HTML entrypoints during dependency scanning.
entries: ['index.html'],
},
build: {
chunkSizeWarningLimit: 800,
},
server: {
// HMR is disabled in AI Studio via DISABLE_HMR env var.
// Do not modify; file watching is disabled to prevent flickering during agent edits.
hmr: process.env.DISABLE_HMR !== 'true',
proxy: {
'/admin/': {
target: adminWebTarget,
changeOrigin: true,
secure: false,
},
'/api/auth': {
target: runtimeServerTarget,
changeOrigin: true,
secure: false,
},
'/api/profile': {
target: runtimeServerTarget,
changeOrigin: true,
secure: false,
},
'/api/runtime': {
target: runtimeServerTarget,
changeOrigin: true,
secure: false,
},
'/api/creation': {
target: runtimeServerTarget,
changeOrigin: true,
secure: false,
},
'/api/story': {
target: runtimeServerTarget,
changeOrigin: true,
secure: false,
},
'/api/editor': {
target: runtimeServerTarget,
changeOrigin: true,
secure: false,
},
'/api/assets': {
target: runtimeServerTarget,
changeOrigin: true,
secure: false,
},
'/api/custom-world': {
target: runtimeServerTarget,
changeOrigin: true,
secure: false,
},
'/api/llm': {
target: runtimeServerTarget,
changeOrigin: true,
secure: false,
},
'/api/ws': {
target: runtimeServerTarget,
changeOrigin: true,
secure: false,
ws: true,
},
},
watch: {
ignored: ignoredWatchGlobs,
},
},
};
});