3.1 KiB
3.1 KiB
Context
当前项目根目录存在三项冗余:
index.ts— 仅包含import "./src/server/dev.ts",与package.json的"start"脚本功能完全重复,无任何其他文件或脚本引用它"module": "src/server/dev.ts"—private: true项目不会被发布,ESM 入口字段无消费者;且指向一个启动服务器的副作用文件本身就不合理.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/保留,只有成功时才清理,排查路径完整。