Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

rehype

一、rehype 是什么

rehype 是一个用于处理和转换 HTML 的工具生态,基于 AST(抽象语法树) 的方式对 HTML 进行解析、遍历和修改。
它隶属于 unified 体系,专注于 HTML 领域,使用的 AST 规范是 hast

核心思想是:

将 HTML 转换为结构化数据(AST),通过插件对其进行分析和修改,再输出为 HTML。


二、适用场景

rehype 适用于以下需求:

  • 对 HTML 做结构化分析与转换
  • 编写插件自动修改 HTML(如标签替换、内容注入、压缩、格式化)
  • HTML 代码质量治理(规范化、最小化)
  • 构建 HTML 处理流水线(如静态站点生成、内容预处理)
  • CLI 场景下批量检查或格式化 HTML 文件

三、核心能力与示例

1. HTML → HTML 转换

通过插件组合,可以将一段 HTML 转换成另一种形式的 HTML,例如:

  • 压缩 HTML(移除多余空格、简化属性)
  • 修改标签结构(如 h1h2
  • 插入、删除或调整节点

2. 插件机制

  • 插件本质是对 AST 的访问与修改函数
  • 插件可以遍历节点并修改其属性或结构
  • 可自由组合多个插件形成处理管道

四、主要包(Monorepo 结构)

该仓库是一个 monorepo,包含以下核心包:

  • rehype-parse
    将 HTML 解析为 AST(hast)

  • rehype-stringify
    将 AST(hast)转换回 HTML

  • rehype
    集成 unified + rehype-parse + rehype-stringify,适用于 HTML 输入 → HTML 输出的场景

  • rehype-cli
    提供命令行工具,用于脚本或工程中的 HTML 检查与格式化


五、插件生态

rehype 拥有丰富的插件生态,插件来源包括官方和社区:

  • awesome-rehype:精选优质插件列表
  • 官方插件列表:完整插件清单
  • GitHub 话题 rehype-plugin:社区维护插件

使用插件时需要自行评估其维护质量与安全性。


六、类型系统

  • rehype 及 unified 体系 全面支持 TypeScript
  • hast 的类型定义由 @types/hast 提供
  • 适合在大型工程中进行类型安全的 HTML 处理

七、兼容性

  • Node.js 维护版本 保持兼容
  • 当前主线版本兼容 Node.js 16
  • 新的主版本发布时会移除对已停止维护 Node 版本的支持

八、安全注意事项

  • 处理 HTML 可能引入 XSS 风险
  • 官方建议搭配使用 rehype-sanitize 进行安全处理
  • 使用第三方插件前需评估其潜在安全风险

九、社区与贡献

  • 提供完整的贡献指南(contributing)
  • 支持通过 Discussions 获取帮助和交流
  • 遵循统一的 Code of Conduct

十、许可证

  • MIT License
  • 作者:Titus Wormer