113 lines
2.9 KiB
TypeScript
113 lines
2.9 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;
|
|
|
|
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: {
|
|
'/api/auth': {
|
|
target: runtimeServerTarget,
|
|
changeOrigin: true,
|
|
secure: false,
|
|
},
|
|
'/api/runtime': {
|
|
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,
|
|
},
|
|
},
|
|
};
|
|
});
|