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:
@@ -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)` |
|
||||
|
||||
Reference in New Issue
Block a user