build: adopt esbuild for frontend bundling (build:web → public/build/)

- esbuild dev dep; build:web/dev:web bundle public/main.ts → public/build/main.js
- gitignore public/build/; tsconfig.web.json now typecheck-only
- frontend build convention documented in PLAN §1, DISPATCH, ARCHITECTURE §5
- resolves the T1 deferred decision
This commit is contained in:
Yaojia Wang
2026-06-16 07:36:01 +02:00
parent 987cab8eb7
commit 409b208928
8 changed files with 38 additions and 18 deletions

View File

@@ -360,6 +360,9 @@ client → {resize, cols, rows} // 独立消息,不混进 input
## 5. 前端架构(`public/`)
**构建**:打包器 = esbuild(T1 )。入口 `public/main.ts` `npm run build:web` `public/build/main.js`(+ `main.css`);
`index.html` `<script type="module" src="./build/main.js">` 加载;server 静态托管 `public/``tsconfig.web.json` 仅类型检查
| 文件 | 职责 | 关键点 |
|------|------|--------|
| `main.ts` | xterm + FitAddon 初始化WS 客户端重连 | WS URL 同源,**scheme 随页面协议**:`(location.protocol === 'https:' ? 'wss' : 'ws') + '://' + location.host + '/term'`(M6:HTTPS 页面下硬写 `ws://` 会被浏览器 mixed-content 拦截, Tailscale/TLS 部署正是 HTTPS);`term.onData → ws.send {input}`;`onmessage → term.write(output)` |