自定义配置
CoreInputs<R, C> 描述 Core 的公开输入。R 是渲染器的输出类型,C 是渲染器为渲染插件提供的额外上下文。所有字段集中在这一页,可通过右侧目录直接跳转。
下方类型表示 Core 内部接收的输入。使用 S 时,响应式输入可以传 Stative 状态或可读闭包;配置对象与数组也可以直接传入。渲染器类用 D 包装,完整写法见快速开始。
remarks、rehypes、repairs和mappers可以省略,省略时保留预设;传空插件列表也会保留预设。
Renderer 必选
类型: RendererClass<HastRoot, ElementContent, Parent, R, C>
将 HAST 内容块转换为目标输出的渲染器类。继承 BaseRenderer 并实现 renderItem,使用时传入 Renderer: D(BlocksRenderer)。
渲染器会接收响应式的 source、plugins 和 patches,并负责应用渲染规则与替换内容。Core 不提供默认 UI。
text 必选
类型: IReadableClosure<string>
当前已收到的完整 Markdown。固定内容使用 toClosure('你好');持续变化的内容使用状态:
build 必选
类型: IReadableClosure<BlockCompilerConfig>
控制解析与修复功能。需要填写每个布尔字段,只有 idPrefix 可以省略:
build.repair 必选
类型: boolean
是否启用 repair 插件组。设为 false 时,不再执行这组 AST 修复。
build.repairEnding 必选
类型: boolean
是否修复流式末尾的未完成语法,需要同时开启 repair。接收完最终文本后设为 false。
build.footnote 必选
类型: boolean
是否解析脚注语法,例如 正文[^note] 配合 [^note]: 说明。。开启末尾修复时,也会隐藏尚未解析的尾部脚注引用。
build.idPrefix 可选
类型: string | undefined
默认值: undefined
脚注 ID 的稳定命名空间。同一页面展示多份内容时,为每份内容指定不同的值;服务端渲染与 hydration 应使用相同的值。不需要隔离时可省略。
build.tex 必选
类型: boolean
是否解析行内公式与块级公式语法,例如 $x^2$ 和 $$x^2$$。生成的公式节点如何显示,由渲染器决定。
build.indentedCode 必选
类型: boolean
是否解析缩进代码块语法。如果希望行首空格继续作为普通段落内容,设为 false。
build.setextHeading 必选
类型: boolean
是否解析通过 === 或 --- 下划线表示的 Setext 标题语法。如果不希望内容在收到下划线时变成标题,设为 false。
patches 必选
类型: IReadableClosure<IPatchItem<R>[]>
把原文中的指定范围替换为渲染器定义的内容,不需要时传 []。渲染器需处理 patch 标记,并调用对应的替换函数。
以输出字符串的渲染器为例:
patches[].key 可选
类型: string | undefined
默认值: undefined
可选的稳定标识。patch 会被重排或插入时,建议指定唯一的 key;省略时,Core 按顺序生成。
patches[].range 必选
类型: number | [number, number]
数字表示在该位置插入内容;二元组表示替换左闭右开的 [start, end) 范围。偏移量使用 JavaScript 字符串索引。
范围需在原文之内、互不重叠,并且完全位于同一个内容块中。无效或冲突的范围会被忽略。
patches[].render 必选
类型: IRenderPatchRender<R> — (text?: string) => R
生成替换内容。渲染器可以把被替换的原文传入回调,返回值需符合渲染器的输出类型 R。
renders 必选
类型: IReadableClosure<PluginSet<RenderPlugin<R, C>, RenderConfigs>>
供渲染器使用的节点级规则。下面的具名类型使用公开的渲染插件契约:
每个插件匹配 HAST 节点并生成输出值。直接处理完整内容块的渲染器可以传 []。Core 没有内置的渲染插件列表。
remarks 可选
类型: IReadableClosure<PluginSet<IPluggable<IRemarkPlugin, unknown>, RemarkConfigs>> | undefined
默认值: undefined
语法解析插件与预设配置。编写方式见 remark。
rehypes 可选
类型: IReadableClosure<PluginSet<IPluggable<IRehypePlugin, unknown>, RehypeConfigs>> | undefined
默认值: undefined
HAST 二次处理插件与预设配置。编写方式见 rehype。
对于嵌入的 HTML,还需要在语法过滤阶段允许该标签。
repairs 可选
类型: IReadableClosure<PluginSet<IPluggable<IRepairPlugin, unknown>, RepairConfigs>> | undefined
默认值: undefined
Markdown AST 二次处理插件与预设配置。整组需要开启 build.repair,末尾修复还需要开启 build.repairEnding。编写方式见 repair。
mappers 可选
类型: IReadableClosure<PluginSet<MapperPluggable, MapperConfigs>> | undefined
默认值: undefined
响应式映射 HAST。默认包含 Smooth 和 Shad,但需要配置后才会启用。声明与响应式选项见 mapper。
嵌套的 mapper 选项直接传给 mapper。内置的响应式选项接收可读闭包,toClosure 可以把静态值或外部状态转为这种输入。
插件输入形式
PluginSet<T, C> — T[] | C | [T[], C]
五个插件输入都支持列表、按名称配置的对象,或者两者的组合。列表中的类插件可以写为 PluginClass 或 [PluginClass, options];mapper 可以写为函数或 [Mapper, options]。
按名称配置的对象也可以作为响应式输入:
在 S 中使用静态配置对象时,也可以通过 toClosure(config) 转为可读输入,见允许额外 HTML 标签。按名称配置只调整已有插件;注册新的插件需使用列表。
插件选项.disabled 可选
类型: boolean | undefined
默认值: false
不创建这个插件,并将其从当前插件组中排除。省略或传 false 时保留插件,例如 { disabled: true } 可以禁用一个预设。
插件选项.priority 可选
类型: PluginPriority | number | undefined
默认值: 插件自身的优先级
控制同类插件的执行顺序,数值越小越早执行。相同优先级保持列表顺序;省略时使用插件自身的优先级。枚举提供 Highest、High、Default、Low 和 Lowest。
类型导入:编译器与渲染器类型来自
@fluxdown/core,插件契约与PluginSet来自@fluxdown/types,IReadableClosure来自stative。各内置插件随对应的插件类型介绍。