Files
2026Technology-Competition/docs/superpowers/plans/2026-09-12-frontend-ts-esbuild.md
T

33 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 前端 TypeScript + esbuild 迁移计划
决策:Q1(a) 单文件 ESM `chat.js`Q2 esbuildQ3 构建产物入库;Q4 `node --test` + Node 原生 TS(禁 enum/namespace 等不可擦除语法)。
## 目标结构
```
frontend/
package.json / tsconfig.json / esbuild.config.mjs
src/{types,api,dom,state,ws,main}.ts
tests/{state,ws}.test.ts
```
- 构建产物:`src/genesis/server/static/chat.js`ESM,入库)。
- `chat_state.js` / `chat_ws.js` 删除(并入 bundle)。
- `chat.html``<script type="module" src="/static/chat.js?v=__ASSET_VER__">`
- `app.py` `_asset_names``chat.html, chat.css, chat.js, favicon.svg`
- Python 测试 `/static/chat_state.js``/static/chat_ws.js` → 改指向 `/static/chat.js`
-`tests/test_chat_state.js``tests/test_chat_ws.js` → 迁移到 `frontend/tests/*.test.ts`
## 任务
1. 工具链:package.json / tsconfig(strict) / esbuild.config.mjs。
2. 基础设施:types.ts / api.ts / dom.ts。
3. 迁移 state.ts(纯函数)+ tests/state.test.ts。
4. 迁移 ws.ts + tests/ws.test.ts。
5. 迁移 main.ts(业务 + DOM,类型化)。
6. 构建产物、改 chat.html、删旧 js、改 app.py `_asset_names`
7. 改 Python 测试 + 删旧 Node 测试。
8. `npm run typecheck` + `npm test` + `python -m pytest`(≥99%)。
9. 文档/日志/提交。
## 风险
- `strict` 下 DOM 引用需类型化(用 `must`/`maybe` 助手)。
- Node 原生 TS 依赖 Node ≥23.6(本机 24)。