125 lines
3.3 KiB
TypeScript
125 lines
3.3 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/**',
|
|
];
|
|
const runtimeServerTarget =
|
|
env.NODE_SERVER_TARGET ||
|
|
'http://127.0.0.1:8081';
|
|
|
|
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: {
|
|
'/generated-character-drafts': {
|
|
target: runtimeServerTarget,
|
|
changeOrigin: true,
|
|
secure: false,
|
|
},
|
|
'/generated-characters': {
|
|
target: runtimeServerTarget,
|
|
changeOrigin: true,
|
|
secure: false,
|
|
},
|
|
'/generated-animations': {
|
|
target: runtimeServerTarget,
|
|
changeOrigin: true,
|
|
secure: false,
|
|
},
|
|
'/generated-custom-world-scenes': {
|
|
target: runtimeServerTarget,
|
|
changeOrigin: true,
|
|
secure: false,
|
|
},
|
|
'/generated-custom-world-covers': {
|
|
target: runtimeServerTarget,
|
|
changeOrigin: true,
|
|
secure: false,
|
|
},
|
|
'/generated-qwen-sprites': {
|
|
target: runtimeServerTarget,
|
|
changeOrigin: true,
|
|
secure: false,
|
|
},
|
|
'/api/auth': {
|
|
target: runtimeServerTarget,
|
|
changeOrigin: true,
|
|
secure: false,
|
|
},
|
|
'/api/runtime': {
|
|
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,
|
|
},
|
|
},
|
|
};
|
|
});
|