1
0
Files
DiAL/openspec/changes/archive/2026-05-09-cleanup-project-artifacts/design.md

53 lines
3.1 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.
## Context
当前项目根目录存在三项冗余:
1. `index.ts` — 仅包含 `import "./src/server/dev.ts"`,与 `package.json``"start"` 脚本功能完全重复,无任何其他文件或脚本引用它
2. `"module": "src/server/dev.ts"``private: true` 项目不会被发布ESM 入口字段无消费者;且指向一个启动服务器的副作用文件本身就不合理
3. `.build/` 目录 — 由 `scripts/build.ts` 在每次构建时生成,包含 `server-entry.ts``static-assets.ts` 两个中间文件。构建完成后这些文件残留在磁盘上,虽已被 `.gitignore` 忽略但不必要地占用空间
项目构建流程为:`vite build` → 生成 `.build/` 中间文件 → `Bun.build()` 编译为单可执行文件 → 输出到 `dist/gateway-checker`
## Goals / Non-Goals
**Goals:**
- 移除无实际作用的文件和配置,减少项目结构噪音
- 构建成功后自动清理中间产物,保持项目目录整洁
- 构建失败时保留中间产物以便排查问题
**Non-Goals:**
- 不改变构建产物本身(输出路径、可执行文件行为不变)
- 不引入新的构建步骤或依赖
- 不调整 RuntimeMode 或开发/生产模式的区分逻辑
## Decisions
### Decision 1: 直接删除 `index.ts`
**选择**:删除文件
**备选**:保留但添加注释说明用途
**理由**:无任何脚本、文件或构建流程引用它,保留只会增加困惑。`package.json``"start"` 脚本已直接指向 `src/server/dev.ts`
### Decision 2: 移除 `"module"` 字段
**选择**:从 `package.json` 中删除 `"module"` 字段
**备选**:改为 `"main"` 字段
**理由**`private: true` 意味着不会被 npm 发布,任何入口字段都没有消费者。改为 `"main"` 同样无意义,因为这不是一个库。完全移除最简洁。
### Decision 3: 构建成功后清理 `.build/`
**选择**:在 `Bun.build()` 成功后调用 `await rm(buildDir, { recursive: true, force: true })`
**备选**
- 始终保留 `.build/`(当前行为)
- 使用临时目录(`os.tmpdir()`
**理由**`build.ts` 开头已导入 `rm` 且已在构建开始时执行清理,只需在成功路径末尾复用同一行代码。构建失败时 `.build/` 自然保留,兼顾排查需求。不使用临时目录是因为 `Bun.build()``import ... with { type: "file" }` 需要相对路径引用 `dist/web/` 下的实际文件,临时目录增加路径复杂度。
具体修改位置:`scripts/build.ts` 第 53 行 `console.log(...)` 之后。
## Risks / Trade-offs
- **[极低风险] 删除 `index.ts` 影响外部工具**:如果 CI/CD 或其他自动化流程通过 `bun index.ts` 启动,会中断。→ 检查确认无此类用法。`package.json``"start": "bun src/server/dev.ts"` 是标准入口。
- **[极低风险] 移除 `module` 字段影响 IDE 解析**:某些 IDE 可能依赖 `module` 字段进行跳转。→ 实际指向 `dev.ts`,对代码导航无帮助。
- **[低风险] 清理 `.build/` 后无法排查偶现构建问题**:→ 构建失败时 `.build/` 保留,只有成功时才清理,排查路径完整。