import { build, loadConfigFromFile, mergeConfig, UserConfig } from 'vite'; import path from 'path'; import fs from 'fs-extra'; const outputDir = path.resolve(__dirname, '../dist/game'); // 清空 dist/game 目录 fs.emptyDirSync(outputDir); // 构建游戏 async function buildGame() { const configFile = path.resolve(__dirname, '../vite.config.ts'); const config = await loadConfigFromFile( { command: 'build', mode: 'production' }, configFile ); const resolved = mergeConfig(config?.config ?? {}, { build: { outDir: outputDir, sourcemap: true, rollupOptions: { input: path.resolve(__dirname, '../src/main.ts'), output: { format: 'es', entryFileNames: '[name].[hash].js', chunkFileNames: 'chunks/[name].[hash].js', assetFileNames: 'assets/[name].[hash][extname]' } } } } satisfies UserConfig); await build(resolved); console.log('✅ Game built successfully.'); } buildGame().catch(e => { console.error(e); process.exit(1); });