不稳定的 API — 此 API 正在积极开发中,可能在未来的 Bun 版本中发生变化。
Bun.markdown.html()— 将 Markdown 渲染为 HTML 字符串Bun.markdown.render()— 使用每个元素的自定义回调渲染 MarkdownBun.markdown.react()— 将 Markdown 渲染为 React JSX 元素
Bun.markdown.html()
将 Markdown 字符串转换为 HTML。
选项
传递一个选项对象作为第二个参数来配置解析器:自动链接
传递true 以启用所有自动链接类型,或传递一个对象以实现精细控制:
标题 ID
传递true 以同时启用标题 ID 和自动链接标题,或传递一个对象以实现精细控制:
Bun.markdown.render()
解析 Markdown 并使用自定义 JavaScript 回调进行渲染。这使您可以完全控制输出格式 — 您可以生成带有自定义类名的 HTML、React 元素、ANSI 终端输出或任何其他字符串格式。
回调签名
每个回调接收:children— 元素的累积内容,作为字符串meta(可选)— 一个包含元素特定元数据的对象
null 或 undefined 以完全从输出中省略该元素。如果没有为元素注册回调,其子元素会原样传递。
块级回调
列表项元数据
listItem 回调接收直接渲染标记所需的一切:
index— 在父列表中的从 0 开始的位置depth— 父列表的嵌套级别(0 = 顶层)ordered— 父列表是否是有序的start— 父列表的起始编号(仅当ordered为 true 时)checked— 任务列表状态(仅对- [x]/- [ ]项)
内联回调
示例
带类名的自定义 HTML
去除所有格式
省略元素
返回null 或 undefined 以从输出中移除元素:
ANSI 终端输出
嵌套列表编号
listItem 回调接收直接渲染标记所需的一切 — 无需后处理:
代码块语法高亮
解析器选项
将解析器选项作为单独的第三个参数传递:Bun.markdown.react()
直接将 Markdown 渲染为 React 元素。返回一个可以用作组件返回值的 <Fragment>。
服务端渲染
适用于renderToString() 和 React Server Components:
组件覆盖
通过在第二个参数中按键名传递自定义 React 组件来替换任何 HTML 元素:可用覆盖
解析器生成的每个 HTML 标签都可以覆盖:React 18 及更早版本
默认情况下,元素使用Symbol.for('react.transitional.element') 作为 $$typeof 符号。对于 React 18 及更早版本,在选项(第三个参数)中传递 reactVersion: 18: