experiment: replace @effect/docgen with TypeDoc for clickable cross-referenced module docs
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 35/100
- Issue 类型
- 功能
- 描述清晰度
- 描述清楚
- 活跃度
- 停滞
- 技术栈
- typescript
- 领域
- documentation, tooling
调研方向
先阅读 packages/evolution/src、现有的 docs/scripts/ 生成流程以及 fumadocs source.config.ts。运行当前的模块文档流水线,然后评估 docs-typedoc/ 和 docs/content/docs/api/ 下的并行 TypeDoc 输出。在不修改 /docs/modules/ 的情况下通过已记录的验收标准,随后完成计划中的 UX 审计和迁移决策,即视为完成。
由索引模型根据 Issue 内容生成。
描述
Context
The current module reference docs are generated by `@effect/[email protected]` using the `mikearnaldi/docgen-template` theme. Output is static MDX with signatures and JSDoc text — no clickable type cross-references, no source links to GitHub.
The goal is Haddock-style behaviour: every type name in a signature is a link that jumps to that type's own documentation page.
Proposed Experiment
Replace `@effect/docgen` with TypeDoc + `typedoc-plugin-markdown` on an isolated output path so both pipelines can run side-by-side without breaking the existing `/docs/modules/` route.
What TypeDoc gives us
- Clickable cross-references for every type in every signature (uses the TypeScript compiler API to resolve them)
- Source links to GitHub out of the box via `sourceLinkTemplate`
- Handles generics, branded types, class methods, and conditional types correctly
- `typedoc-plugin-markdown` emits MDX consumable by fumadocs
Implementation plan
- Add `typedoc`, `typedoc-plugin-markdown`, and `typedoc-plugin-frontmatter` as dev dependencies in `packages/evolution`
- Add a `typedoc.json` config in `packages/evolution` pointed at existing `src/` — output to a new `docs-typedoc/` directory
- Add a `generate-typedoc-docs` script in `docs/scripts/` that copies the output into `docs/content/docs/api/` (parallel to the existing `modules/` path)
- Wire the new path into fumadocs `source.config.ts` under a separate `/docs/api/` route
- Audit the output: verify cross-references resolve, source links point correctly, category grouping is preserved
- Compare UX against the existing `/docs/modules/` output and decide whether to migrate fully or keep both
Acceptance Criteria
- TypeDoc generates MDX without errors for all exported symbols in `packages/evolution/src`
- Cross-reference links (e.g. clicking `Data.Constr` in a TSchema signature) resolve to the correct page
- Source links open the correct line in GitHub
- The new output is accessible at `/docs/api/` in the docs site without affecting `/docs/modules/`
- Existing `@effect/docgen` pipeline is untouched
Notes
- This is explicitly experimental — full migration is a separate decision pending the audit
- `externalPattern` exclusions for Effect library internals will likely need tuning to avoid polluting the output with Effect framework types
- 主要语言
- TypeScript
- 星标
- 22
- 派生
- 35
- 平均合并
- 23 小时 52 分钟
- 30 天内合并 PR
- 41
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
IntersectMBO/evolution-sdk 的其他 Issue
-
Kupmios: protocol parameters fail against Ogmios v7 (maxReferenceScriptsSize renamed)可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭bug
难度 2/5 1-3 小时 新手友好度 84/100
IntersectMBO/evolution-sdk#559 ·
维护者通常 1 天内回复
-
enhancement
难度 2/5 1-3 小时 新手友好度 72/100
IntersectMBO/evolution-sdk#557 ·
维护者通常 1 天内回复
-
dependabot: remove stale @types/bip39 entries可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭dependencies good first issue
难度 1/5 1 小时以内 新手友好度 93/100
IntersectMBO/evolution-sdk#541 ·
维护者通常 1 天内回复
-
txBuilder: committee cert redeemers are never resolved to a certificate index可能已有人在做 @Kshot3000 于 1 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 80/100
IntersectMBO/evolution-sdk#518 ·
维护者通常 1 天内回复
-
RewardAccount: validate header type bits and bech32 prefix可能已有人在做 @Kshot3000 于 1 天前认领。 未关闭enhancement external-review
难度 2/5 1-3 小时 新手友好度 84/100
IntersectMBO/evolution-sdk#456 · 1 条评论 ·
维护者通常 1 天内回复
查看 IntersectMBO/evolution-sdk 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 68/100
apache/rocketmq-dashboard#6872 ·
维护者通常 3 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 70/100
fab-geocommuns/RNB-site#539 ·
维护者通常 2 天内回复
-
Guest multiview tile label leaks raw virtual-source-id "Whip" instead of the guest name / slot label未关闭
难度 2/5 1-3 小时 新手友好度 62/100
Eyevinn/open-live-studio#211 ·
维护者通常 1 天内回复
-
documentation good first issue
难度 2/5 半天 新手友好度 72/100
sujithputta02/Esapay#13 ·
-
难度 2/5 1-3 小时 新手友好度 65/100
ehmpathy/rhachet-roles-bhuild#468 ·
维护者通常 1 天内回复