- Added a new modelsProxyRouter to handle requests for optimized 3D character models. - Introduced modelsProxyService to manage GLB file optimization using gltf-transform with Draco compression. - Updated app.js to include the new modelsProxyRouter for API access. - Enhanced .gitignore to exclude model cache files. - Added scripts for optimizing GLB models and updated README with optimization instructions. - Integrated DRACOLoader in Character3D.vue for loading compressed models. - Updated FamilyView.vue to streamline character rendering logic.
71 lines
2.7 KiB
JavaScript
71 lines
2.7 KiB
JavaScript
import { defineConfig, loadEnv } from 'vite';
|
|
import vue from '@vitejs/plugin-vue';
|
|
import { NodeGlobalsPolyfillPlugin } from '@esbuild-plugins/node-globals-polyfill';
|
|
import { NodeModulesPolyfillPlugin } from '@esbuild-plugins/node-modules-polyfill';
|
|
import path from 'path';
|
|
|
|
export default defineConfig(({ mode }) => {
|
|
// Lade Umgebungsvariablen explizit
|
|
const env = loadEnv(mode, process.cwd(), '');
|
|
// Kombiniere mit process.env, um auch Shell-Umgebungsvariablen zu berücksichtigen
|
|
const combinedEnv = { ...env, ...process.env };
|
|
|
|
return {
|
|
plugins: [vue()],
|
|
define: {
|
|
// Explizit Produktionsumgebung setzen
|
|
__DEV__: false,
|
|
'import.meta.env.DEV': false,
|
|
'import.meta.env.PROD': true,
|
|
'import.meta.env.MODE': '"production"',
|
|
// Stelle sicher, dass Umgebungsvariablen aus .env.production oder Shell-Umgebung geladen werden
|
|
...(combinedEnv.VITE_DAEMON_SOCKET && {
|
|
'import.meta.env.VITE_DAEMON_SOCKET': JSON.stringify(combinedEnv.VITE_DAEMON_SOCKET)
|
|
}),
|
|
...(combinedEnv.VITE_API_BASE_URL && {
|
|
'import.meta.env.VITE_API_BASE_URL': JSON.stringify(combinedEnv.VITE_API_BASE_URL)
|
|
}),
|
|
...(combinedEnv.VITE_CHAT_WS_URL && {
|
|
'import.meta.env.VITE_CHAT_WS_URL': JSON.stringify(combinedEnv.VITE_CHAT_WS_URL)
|
|
}),
|
|
...(combinedEnv.VITE_SOCKET_IO_URL && {
|
|
'import.meta.env.VITE_SOCKET_IO_URL': JSON.stringify(combinedEnv.VITE_SOCKET_IO_URL)
|
|
})
|
|
},
|
|
optimizeDeps: {
|
|
include: ['three', 'three/addons/loaders/GLTFLoader.js', 'three/addons/loaders/DRACOLoader.js'],
|
|
esbuildOptions: {
|
|
plugins: [
|
|
NodeGlobalsPolyfillPlugin({
|
|
buffer: true
|
|
}),
|
|
NodeModulesPolyfillPlugin()
|
|
]
|
|
}
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
'@': path.resolve(__dirname, './src'),
|
|
stream: 'stream-browserify',
|
|
util: 'util',
|
|
assert: 'assert',
|
|
},
|
|
dedupe: ['three'],
|
|
preserveSymlinks: false
|
|
},
|
|
build: {
|
|
rollupOptions: {
|
|
output: {
|
|
// Stelle sicher, dass three nicht externalisiert wird
|
|
manualChunks: undefined
|
|
},
|
|
external: [] // Explizit keine externen Module
|
|
},
|
|
commonjsOptions: {
|
|
include: [/three/, /node_modules/],
|
|
transformMixedEsModules: true
|
|
}
|
|
},
|
|
};
|
|
});
|