comarkdown/comark
Comark is an open-source Markdown parser and renderer with components, attributes and plugins. It streams AI output to React, Vue, Svelte, Angular, HTML and the terminal.
comark
这是什么
- 一个以 TypeScript 编写的 Markdown 解析器,可将 CommonMark/GFM(加上少量的组件/属性扩展)转换为紧凑且可序列化的 AST。
- AST 可以在构建时、运行时或流式传输文本时(例如来自 LLM)生成,然后由特定框架的渲染器进行渲染。
主要功能
- 纯函数解析 –
parseMarkdown(md)会返回一个纯 JavaScript 结构 (['tag', props, …children])。没有副作用,因此您可以解析来自数据库、CMS 或实时 LLM 输出的内容,而无需重新构建。 - 支持流式传输 – 解析器会自动闭合未完成的语法(粗体、代码块、组件),因此可以逐帧显示部分 AI 生成的输出。
- 一个 AST,多种渲染器 – 同一个 AST 可以提供给 React、Vue、Svelte、Angular、纯 HTML 或 ANSI 终端输出的渲染器使用。
- 组件语法 – 内联自定义组件可以使用
::component{…} … ::在 Markdown 中编写(例如:警示、数学公式)。原生元素的属性通过{.class}支持。 - 插件生态系统 – 内置 Shiki 语法高亮、KaTeX 数学公式、Mermaid 图表、目录 (TOC)、警示、脚注等插件,并兼容于现有的
markdown-it插件。 - 性能 – 基于
markdown-exit构建,这是markdown-it的 TypeScript 重写版本。
如何使用
- 安装核心包:
npm install comark - 将 Markdown 解析为 AST:
import { parseMarkdown } from 'comark' const tree = await parseMarkdown('# Hello **World**') // → { nodes: [['h1', { id: 'hello' }, 'Hello ', ['strong', {}, 'World']]], … } - 选择符合您 UI 技术栈的渲染器包,并传入相同的 AST 或原始 Markdown 字符串。
- Vue –
@comark/vue - React –
@comark/react - Svelte –
@comark/svelte - Angular –
@comark/angular - HTML –
@comark/html - ANSI (终端) –
@comark/ansi
- Vue –
- 渲染时可选择性加入插件(例如 KaTeX 数学公式)和自定义组件。
对 AI 生成内容的重要性
- LLM 通常会流式输出部分 Markdown;Comark 的自动闭合逻辑可在模型持续输入时保持 UI 稳定。
- 可序列化的 AST 让您可以存储或传输解析后的表示形式,避免在客户端重复解析。
- 由于解析器与框架无关,相同的 AI 生成 Markdown 可以在 Web 应用程序、原生框架或终端工具中显示,而无需重写内容。
包
| 包 | 用途 |
|---|---|
comark |
核心解析器、AST 工具、插件系统 |
@comark/vue |
Vue 3 渲染器 |
@comark/react |
React 渲染器 (包含 Next.js Server Components) |
@comark/svelte |
Svelte 5 渲染器 |
@comark/angular |
Angular 渲染器 |
@comark/nuxt |
支持自动导入的 Nuxt 模块 |
@comark/html |
渲染为纯 HTML 字符串 |
@comark/ansi |
渲染为终端 ANSI |
许可
- MIT,并附带友好的“Made with ❤️”注记。
总结 Comark 是一个现代化、支持流式传输的 Markdown 解析器与多框架渲染器,旨在协助开发者在多种前端界面上显示实时或 AI 生成的 Markdown,同时保持解析的快速与一致性。
相关
- 项目
- 项目
- 项目
- 项目