From 66ec8190c918f405b31994dfe5aa04d22379259b Mon Sep 17 00:00:00 2001 From: unanmed <1319491857@qq.com> Date: Wed, 20 Aug 2025 15:22:24 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=80=82=E9=85=8D=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mota.config.ts | 41 ----------------------------------------- script/dev.ts | 42 +++++++++++++++++++++++++----------------- 2 files changed, 25 insertions(+), 58 deletions(-) delete mode 100644 mota.config.ts diff --git a/mota.config.ts b/mota.config.ts deleted file mode 100644 index bc6c2a4..0000000 --- a/mota.config.ts +++ /dev/null @@ -1,41 +0,0 @@ -interface MotaConfig { - name: string; - resourceName?: string; - zip?: Record; -} - -function defineConfig(config: MotaConfig): MotaConfig { - return config; -} - -export default defineConfig({ - // 这里修改塔的name,请保持与全塔属性的完全相同,否则发布之后可能无法进行游玩 - name: 'HumanBreak', - resourceName: 'HumanBreakRes', - zip: { - 'resource.zip': [ - 'autotiles/*', - 'tilesets/*', - 'images/*', - 'animates/*', - 'sounds/*', - 'fonts/*', - '!images/bg.jpg' - ], - 'weather.zip': [ - 'materials/fog.png', - 'materials/cloud.png', - 'materials/sun.png' - ], - 'materials.zip': [ - 'materials/animates.png', - 'materials/enemy48.png', - 'materials/enemys.png', - 'materials/icons.png', - 'materials/items.png', - 'materials/npc48.png', - 'materials/npcs.png', - 'materials/terrains.png' - ] - } -}); diff --git a/script/dev.ts b/script/dev.ts index f16be2f..638be13 100644 --- a/script/dev.ts +++ b/script/dev.ts @@ -6,7 +6,6 @@ import { createServer as http } from 'http'; import { isNil } from 'lodash-es'; -import config from '../mota.config.js'; import fs from 'fs-extra'; import { resolve, basename } from 'path'; import * as rollup from 'rollup'; @@ -19,6 +18,10 @@ import commonjs from '@rollup/plugin-commonjs'; import json from '@rollup/plugin-json'; import replace from '@rollup/plugin-replace'; +const [, , vitePortStr = '5173', serverPortStr = '3000'] = process.argv; +const vitePort = parseInt(vitePortStr); +const serverPort = parseInt(serverPortStr); + const base = './public'; type Request = IncomingMessage; @@ -86,7 +89,7 @@ async function getFile(req: Request, res: Response, path: string) { res.writeHead(200, { 'Content-type': 'text/css' }); if (path.endsWith('.html')) res.writeHead(200, { 'Content-type': 'text/html' }); - return res.end(data), true; + return (res.end(data), true); } catch (e) { console.log(e); return false; @@ -123,7 +126,7 @@ async function getAll( }); await Promise.all(tasks); const result = ids.map(v => data[v]); - return res.end(result.join(join)), true; + return (res.end(result.join(join)), true); } async function getEsmFile( @@ -468,26 +471,25 @@ ${names} async function startHttpServer(port: number = 3000) { if (h) return h; const server = http(); + const data = await fs.readFile('public/project/data.js', 'utf-8'); + const json = data.split('\n').slice(1).join('\n'); + const parsed = JSON.parse(json); + const name = parsed.firstData.name; + + server.listen(port, '127.0.0.1'); - const tryNext = () => { - server.listen(port++, '127.0.0.1'); - }; - server.on('error', () => { - tryNext(); - }); server.on('listening', () => { - console.log(`编辑器地址:http://127.0.0.1:${port - 1}/editor.html`); - setupHttp(server); + console.log(`编辑器地址:http://127.0.0.1:${port}/editor.html`); + setupHttp(server, name); }); - tryNext(); return server; } -function setupHttp(server: Server) { +function setupHttp(server: Server, name: string) { server.on('request', async (req, res) => { const p = req.url - ?.replace(`/games/${config.name}`, '') + ?.replace(`/games/${name}`, '') .replace('/all/', '/') // 样板中特殊处理的all文件 .replace('/forceTem/', '/') // 强制用样板的http服务获取文件 .replace('/src/', '../src/'); // src在上一级目录 @@ -619,14 +621,20 @@ async function ensureConfig() { (async function () { // 1. 启动vite服务 const vite = await createServer(); - await vite.listen(5173); - console.log(`游戏地址:http://localhost:5173/`); + await vite.listen(vitePort); + console.log(`游戏地址:http://localhost:${vitePort}/`); // 2. 启动样板http服务 await ensureConfig(); - const server = await startHttpServer(3000); + const server = await startHttpServer(serverPort); h = server; // 3. 启动样板ws热重载服务 await startWsServer(server); + + process.on('SIGTERM', () => { + vite.close(); + server.close(); + process.exit(0); + }); })();