TypeDoc 中 @author 标签的原理与实战:从解析到渲染的完整链路
开发工具文档【免费下载链接】typedocDocumentation generator for TypeScript projects.项目地址https://gitcode.com/gh_mirrors/ty/typedoc点击查看免费下载本篇技术指南围绕 TypeDoc 文档标签中的author标签展开它属于 TypeDoc 的哪类标签、默认配置中如何声明、解析与渲染的底层链路是怎样的以及如何在生成的 API 文档中正确记录作者信息。读完本文你不仅能在项目注释中规范使用author记录方法作者还能理解 TypeDoc 对“无行为块标签”无副作用标签的解析与渲染机制并知道如何通过blockTags配置扩展类似的自定义标签。1. 标签定位author 是无行为的块标签Block TagTypeDoc 的官方标签文档 site/tags/author.md 对author的定义非常明确Tag KindBlock块标签属于 Tags 总览 中列出的 Block Tags 类别author可用于记录某个方法或任意被文档化的声明的作者TypeDoc 不为该标签附加任何特殊行为attaches no behavior它只是被解析为Comment上的一个块标签并在生成的文档中渲染为注释内的一个段落/小节。这与hidden会移除 Reflection、group会改变文档组织结构等有明确行为的标签形成对比。author属于“纯记录型”标签TypeDoc 只做解析与渲染不改变任何转换逻辑。TypeDoc 标签总览页 site/tags.md 也指出TypeDoc 支持的标签集中包含了不少“无关联行为”的 JSDoc 常用标签目的是减少用户为常见标签单独做自定义配置的负担——author正是这类被内置支持、开箱即用的标签。2. 默认配置author 在哪里被声明为合法标签author被内置为合法块标签的事实可以在源码中得到直接印证。TypeDoc 的默认标签清单定义在 src/lib/utils/options/tsdoc-defaults.tsexport const blockTags [ ...tsdocBlockTags, author, callback, category, // ... 其余块标签 ] as const;其中tsdocBlockTags是 TSDoc 标准定义的部分defaultValue、deprecated、example、param等而author、callback、since、license等则是 TypeDoc 在 TSDoc 标准之外额外内置的 JSDoc 常用标签。这份清单通过 src/lib/utils/options/defaults.ts 导出为blockTags选项的默认值export const blockTags: readonly TagString[] TagDefaults.blockTags;这个默认值会作为blockTags选项TagString[]类型见 src/lib/utils/options/declaration.ts提供给用户也就是说你可以像其他选项一样通过配置文件覆盖或扩展它。3. 解析阶段未识别标签会告警author 不会在 site/tags.md 中有一个重要约定未被识别的标签会产生 warning但 TypeDoc 仍会解析整个注释并依靠上下文线索推断标签类型。解析逻辑位于 src/lib/converter/comments/parser.ts。当解析器遇到一个块标签时会检查它是否在config.blockTags中if (!config.blockTags.has(blockTag.text)) { warning(i18n.unknown_block_tag_0(blockTag.text), blockTag); }也就是说如果你写了一个既不在blockTags、也没在tsdoc.json/ 配置中声明的标签会收到Encountered an unknown block tag ...警告。由于author在默认blockTags清单里第 2 节所以使用它不会触发任何 unknown block tag 警告这是它被内置的直接收益。解析器随后会把标签内容读取为一个CommentTag对于author这类普通标签走通用分支读取其后的文本内容作为该标签的contentMarkdown 显示部分。4. 行为验证单元测试如何确认 author 被正确解析仓库中有一个专门针对author标签的回归测试用例源自 GitHub issue #2603author标签曾被误报为未知标签。测试数据见 src/test/converter2/issues/gh2603.ts/** * author Ian Awesome */ export const x 1;对应的断言在 src/test/issues.c2.test.tsit(#2603 handles author tag, () { const project convert(); const x query(project, x); equal( x.comment?.getTag(author), new CommentTag(author, [{ kind: text, text: Ian Awesome }]), ); logger.expectNoOtherMessages(); });这段测试精确地验证了两点author被解析为Comment上的一个CommentTag标签名为author内容为纯文本Ian Awesome转换全程不产生任何日志告警logger.expectNoOtherMessages()与第 3 节所述的“不会触发 unknown block tag 警告”互相印证。5. 渲染阶段author 如何变成文档中的一个小节author“渲染为注释中的一个段落”这一行为可以在默认主题的渲染器中确认。渲染块标签的函数是 src/lib/output/themes/default/partials/comment.tsx 中的commentTagsconst skippedTags context.options.getValue(notRenderedTags); // ... const tags /* ... 过滤掉 skipRendering 与 notRenderedTags 中标签 */; const tagsContents tags.map((item) { const name item.name ? ${translateTagName(item.tag)}: ${item.name} : translateTagName(item.tag); const anchor context.slugger.slug(name); return ( div class{tsd-tag-${item.tag.substring(1)}} h4 classtsd-anchor-link id{anchor} {name} {anchorIcon(context, anchor)} /h4 {/* item.typeAnnotation 若存在则渲染 */} JSX.Raw html{context.markdown(item.content)} / /div / ); });从源码结构看author标签在默认主题下会被渲染为一个带tsd-tag-author类名的容器div一个h4标题经translateTagName翻译标签名即显示为本地化后的 “Author”标题带锚点方便外部链接直接定位到该小节标签内容经context.markdown(...)渲染为 Markdown 后以原始 HTML 插入因此author内容中可以使用 Markdown 语法。另外注意author不在notRenderedTags默认清单中见 src/lib/utils/options/defaults.ts其中只包含group、category、summary等组织型标签因此它会实际出现在生成的 HTML 里。同时它也支持skipRendering标志——其他标签如remarks、returns的后续重复出现在特定处理流程中会把skipRendering置为 true 从而不出现在页面上但对于author而言不存在这类特殊流程。6. 用法示例官方文档给出的最小示例见 site/tags/author.md/** * author John Smith */ export function rand(min: number, max: number): number;扩展写法内容部分按 Markdown 渲染可写多行、链接、代码等/** * 生成 [min, max) 区间内的随机整数。 * * author John Smith、Jane Doe * * since 1.0.0 */ export function randInt(min: number, max: number): number { return Math.floor(min Math.random() * (max - min)); }使用建议author属于块标签应放在注释的块级位置与remarks、since同层不要嵌入段落中间由于内容会经 Markdown 渲染作者名后可附邮箱、社交主页等纯文本信息不要依赖外部链接仓库文档规范要求避免外链若项目希望统一在“作者”小节之外补充其他信息如license、since它们与author一样都是无行为块标签可自由组合。7. 延伸如何扩展类似的自定义块标签author这类“无行为块标签”的机制对自定义标签同样适用。按 site/tags.md 的说明TypeDoc 支持两种方式扩展标签清单使新标签不再产生 unknown block tag 警告方式一tsdoc.json必须与tsconfig.json放在同一目录{ $schema: https://developer.microsoft.com/en-us/json-schemas/tsdoc/v0/tsdoc.schema.json, extends: [typedoc/tsdoc.json], noStandardTags: false, tagDefinitions: [ { tagName: maintainer, syntaxKind: block } ] }方式二在 JS 配置文件中基于OptionDefaults扩展现有清单官方推荐便于保留全部默认标签// typedoc.config.mjs import { OptionDefaults } from typedoc; export default { blockTags: [ ...OptionDefaults.blockTags, maintainer, ], };配置生效后可直接验证运行pnpm exec typedoc或你项目中对应的npx typedoc/ 脚本入口对使用了新标签的声明确认控制台不再输出Encountered an unknown block tag maintainer警告生成的页面中会像author一样出现tsd-tag-maintainer小节渲染逻辑与第 5 节所示commentTags完全一致。仓库根目录的 tsdoc.json 是本项目自身的 TSDoc 配置实例可参考其写法。8. 小结author是 TypeDoc 内置的无行为块标签仅用于记录作者并渲染为注释中的一个可锚定小节它被内置进 tsdoc-defaults.ts 的blockTags清单经 defaults.ts 成为blockTags选项默认值因此使用时不会触发 unknown block tag 警告且有 issue #2603 的回归测试 保证解析结果正确渲染由默认主题的 commentTags 完成生成带锚点的h4标题加 Markdown 正文若你需要maintainer之类的同类型标签直接通过tsdoc.json或blockTags选项扩展即可渲染行为与author完全一致。赞分享开发工具文档【免费下载链接】typedocDocumentation generator for TypeScript projects.项目地址https://gitcode.com/gh_mirrors/ty/typedoc点击查看免费下载相关推荐TypeDoc 中 Markdown 的完整渲染链路从注释解析到项目文档集成TypeDoc 中 Markdown 的完整渲染链路从注释解析到项目文档集成 TypeDoc 将所有文档注释与独立 Markdown 文档统一交给 markd开发工具文档MNN MnnLlmChat 模型标签系统深度解析从 market_config.json 到 UI 渲染的完整链路MNN MnnLlmChat 模型标签系统深度解析从 market_config.json 到 UI 渲染的完整链路 导读 本文聚焦阿里巴巴 MNN 开源仓库人工智能大模型推理引擎深度学习本地部署模型量化模型优化多模态计算机视觉嵌入式Pandoc author-in-text 引文后缀解析从 Markdown 语法到 Citeproc 渲染的完整原理Pandoc author in text 引文后缀解析从 Markdown 语法到 Citeproc 渲染的完整原理 导读 author p. 33; 文档开发工具CLI上一篇如何使用 Shutter Encoder免费视频压缩神器的完整指南下一篇终极 GitToolBox 插件使用指南提升你的 IDE Git 工作流效率 创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Snipe-IT 快速上手:3 条命令搭建开源 IT 资产与许可证管理系统

Snipe-IT 快速上手:3 条命令搭建开源 IT 资产与许可证管理系统

Snipe-IT 快速上手:3 条命令搭建开源 IT 资产与许可证管理系统 【免费下载链接】snipe-it A free open source IT asset/license management system 项目地址: https://gitcode.com/GitHub_Trending/sn/snipe-it Snipe-IT 是一款开源的 IT 资产管理与软件许可…

2026/9/25 3:25:47 阅读更多 →
Apache Iceberg 视图规范(View Spec)深入解读:跨引擎视图元数据的统一格式

Apache Iceberg 视图规范(View Spec)深入解读:跨引擎视图元数据的统一格式

数据湖大数据数据存储 【免费下载链接】iceberg Apache Iceberg 项目地址: https://gitcode.com/gh_mirrors/icebe/iceberg 点击查看 免费下载 Apache Iceberg 的视图规范(View Spec)定义了与表格式(Table Format)同等…

2026/9/25 3:25:47 阅读更多 →
开源协议分类与实战指南:从MIT到GPL

开源协议分类与实战指南:从MIT到GPL

1. 开源协议的本质与分类逻辑开源协议是开源世界的"宪法",它定义了代码的使用规则、修改权限和分发条件。作为一名经历过多次开源项目的老兵,我见过太多因为协议选择不当导致的纠纷案例。比如某创业公司使用了GPL协议的库却未开源自己的代码&a…

2026/9/25 3:25:47 阅读更多 →

最新新闻

Ubuntu 22.04 Server 安装与初始化配置全攻略

Ubuntu 22.04 Server 安装与初始化配置全攻略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 4:48:41 阅读更多 →
50款Android Studio项目源码导入实战:环境对齐与避坑指南

50款Android Studio项目源码导入实战:环境对齐与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 4:48:41 阅读更多 →
鸿蒙HAP打包上架全流程深度解析与避坑指南

鸿蒙HAP打包上架全流程深度解析与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 4:48:41 阅读更多 →
深入浅出MSP协议:飞控与地面站串口通信实战解析

深入浅出MSP协议:飞控与地面站串口通信实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 4:48:41 阅读更多 →
安卓应用安全基础:权限、组件暴露与加固攻防实践

安卓应用安全基础:权限、组件暴露与加固攻防实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 4:48:41 阅读更多 →
Erlang/OTP 记录(Records)实战指南:定义、创建、访问与编译期元组展开原理

Erlang/OTP 记录(Records)实战指南:定义、创建、访问与编译期元组展开原理

编程语言语言运行时标准库编译器并发编程 【免费下载链接】otp Erlang/OTP 项目地址: https://gitcode.com/gh_mirrors/ot/otp 点击查看 免费下载 Records 是 Erlang/OTP 中用于存储固定数量元素的命名数据结构,其作用与 C 语言中的 struct 类似&#x…

2026/9/25 4:47:41 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →