Files
UHD_Media_Tool/docs/adr/ADR-001-runtime-node-not-deno.md
rootandClaude Opus 5.5 b343dddbf6 docs: 清理过程文档,CHANGELOG 补齐 0.3.8–0.3.14
- 删除 docs/plan 下 00–18 的计划、评审、验收、发布记录与升级证据,docs/spikes 与 spikes 验证代码
  (保留 spikes/movieclaw-src 本地克隆),以及 4 份一次性审查 / 调研;全部可在 ceb66f8 查到
- MP 对照移到 docs/porting/moviepilot-v3-comparison.md;经验教训改为 docs/plan/lessons.md(补第 25 条)
- docs/plan/README.md:文档放哪、当前状态、待办
- 引用改写:代码注释指向在维护的文档,其余注明已删除与 git 位置;清掉原有 6 个失效链接
- README 开头改为当前状态与入口;CHANGELOG 补齐 0.3.8–0.3.14 与工程变更

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-02 16:08:09 +08:00

2.1 KiB
Raw Permalink Blame History

ADR-001:运行时采用 Node.js 24 LTS + pnpm workspace,而非 Deno

Superseded by ADR-004(2026-09-27,W1.5 已迁移到 Deno 2.9.7 + TypeScript 7.0.2)。以下内容仅作历史记录。

  • 状态:已被 ADR-004 取代(2026-09-27);原状态:已采纳(2026-09-27)
  • 关联:REQ §9(技术架构选择)、00-first-version-plan(已删除,见 git ceb66f8) §1

背景

需求文档 v0.7 的技术方向是"TypeScript + 最新稳定版 Deno(部署固定版本)+ PostgreSQL + Pi"。REQ §9 同时允许:在有明确依赖障碍时评估替代方案,并记录代价。

决定

v0.1 使用 Node.js 24 LTS + pnpm workspace + TypeScript 5.9 strict。前端沿用 /opt/uhd_web 的 React Router 7 + Vite 7 + Tailwind v4 + shadcn 技术栈,后端用 Hono 4(@hono/node-server)。

理由

  1. 用户指定沿用 uhd_web 技术栈。 设计系统、组件、token 守卫脚本、构建与 CI 习惯都直接复用,前后端同一套工具链(pnpm、vitest、tsc)。
  2. 开发机没有安装 Deno。 引入第二套运行时会增加环境成本,且 uhd_web 相关脚本均基于 Node。
  3. 候选依赖以 Node 为主要目标。 OpenWorkflow(peer 依赖 postgres.js)与 Pi(@earendil-works/pi-*)的文档与测试以 Node 为主,在 Deno 下需要额外兼容性验证;用 Node 可以把 W0 spike 集中在业务语义(恢复/信号/取消/重试)上。
  4. REQ §9 允许记录代价后替代,产品行为要求不受运行时影响。

代价

  • 失去 Deno 的默认权限沙箱(--allow-net 等)。REQ §10.2 要求的"进程权限、容器挂载、网络白名单"须在部署层(容器只读挂载、出站白名单)和业务层(能力注册中心显式白名单)落实,不能依赖运行时。
  • 失去 Deno 内置的 fmt/lint/test,改用 biome + vitest,需要自行锁版本。
  • npm 依赖面更大,需锁定 pnpm-lock.yaml,并对 install 脚本做白名单(pnpm-workspace.yaml 的 allowBuilds)。

复议条件

若后续部署要求强制运行时级权限隔离,或 Pi / OpenWorkflow 转为 Deno 优先,再评估迁移;领域包(packages/domain)保持无 IO,迁移成本主要在 adapters 与 server。