HTML 到 Markdown 转换工具
这个模块提供了一套无依赖的 HTML 到 Markdown 转换工具,可以独立使用。
功能特性
- 🚀 无依赖: 只使用浏览器原生 API,无需额外依赖
- 🎯 类型安全: 完整的 TypeScript 类型定义
- 🔧 可配置: 支持自定义图片和链接处理
- 📦 模块化: 提供多个独立的工具函数
- 🧪 测试覆盖: 完整的单元测试
安装
使用方法
基本转换
带选项的转换
批量转换
HTML 检测
文本提取
HTML 清理
API 参考
htmlToMarkdown(html: string, options?: HtmlToMarkdownOptions): string
将 HTML 字符串转换为 Markdown。
参数:
html: 要转换的 HTML 字符串options: 可选的转换选项
返回值:
- 转换后的 Markdown 字符串
HtmlToMarkdownOptions
转换选项接口:
batchHtmlToMarkdown(htmlFragments: string[], options?: HtmlToMarkdownOptions): string[]
批量转换 HTML 片段为 Markdown。
参数:
htmlFragments: HTML 字符串数组options: 可选的转换选项
返回值:
- Markdown 字符串数组
isHtml(text: string): boolean
检测字符串是否为 HTML。
参数:
text: 要检测的字符串
返回值:
- 如果是 HTML 返回 true,否则返回 false
extractTextFromHtml(html: string): string
从 HTML 中提取纯文本。
参数:
html: HTML 字符串
返回值:
- 提取的纯文本
cleanHtml(html: string): string
清理 HTML 字符串,移除不必要的空白和换行。
参数:
html: HTML 字符串
返回值:
- 清理后的 HTML 字符串
支持的 HTML 标签
块级元素
<h1>-<h6>→#-######<p>→ 段落<blockquote>→><pre>→ 代码块<ul>,<ol>→ 列表<table>→ 表格<hr>→ 分隔线<div>→ 容器
内联元素
<strong>,<b>→**粗体**<em>,<i>→*斜体*<del>,<s>→~~删除线~~<code>→内联代码<a>→[链接](URL)<img>→<br>→ 换行
示例
复杂 HTML 转换
自定义处理器
注意事项
- 浏览器环境: 这些工具需要在浏览器环境中运行,因为它们使用了
DOMParser - HTML 解析: 使用浏览器原生的 HTML 解析器,确保兼容性
- 性能考虑: 对于大量 HTML 内容,建议分批处理
- 错误处理: 函数会优雅地处理无效的 HTML 输入
测试
运行测试:
贡献
欢迎提交 Issue 和 Pull Request 来改进这个工具。
