前言
本文主要介绍如何使用 npm 包 rehype-remark,将 HTML 转换为 Markdown,并实现一些定制化的需求。rehype-remark 是 rehype 和 remark 两个库的结合体,它们分别负责将 HTML 转换成抽象语法树(AST)、将抽象语法树转换成 Markdown。通过 npm 包 rehype-remark 提供的 APIs,我们可以通过编写 JavaScript 代码,轻松定制化地将 HTML 转换成 Markdown。
安装 rehype-remark
在使用之前,我们需要先安装 rehype-remark,可以通过以下命令来完成安装:
npm install rehype-remark
基本用法
rehype-remark 的核心功能是将 HTML 转换成 Markdown,下面我们来看一下基本的用法。
我们首先需要创建一个 rehype-remark 的转换器实例:
-- -------------------- ---- ------- ----- ------- - ------------------ ----- ----------- - ----------------------- ----- --------------- - --------------------------- ----- ------------ - ------------------------ ----- --------- - --------- ----------------- ------------------ ---------------------
上面的代码使用了 unified 和三个插件:rehype-parse、rehype-remark、remark-stringify。其中,rehype-parse 和 remark-stringify 分别是将 HTML 和 Markdown 转换成抽象语法树(AST)的插件;rehype-remark 则是在抽象语法树上做一些转换处理。通过链式调用 use 方法,我们将这三个插件传给了 processor。
接着,我们可以使用 createdProcessor 来执行转换:
const input = '<h1>hello world</h1>' processor.process(input, (err, file) => { if (err) throw err console.log(String(file)) // => # hello world\n })
上面的代码中,我们将 HTML 字符串传给了 process 方法,通过回调函数拿到了转换后的 Markdown 字符串。可以看到,我们将 HTML 转换成了标题(即 #)。
配置项
在处理 HTML 转 Markdown 的过程中,我们肯定会有一些定制化的需求。rehype-remark 提供了一些配置项,可以帮助我们实现定制化。接下来,我们分别介绍一下常用的配置项。
HTML 标签转换
rehype-remark 默认将所有 HTML 标签转换为相应的 Markdown,不过我们可以通过 specify 选项来定制化 HTML 标签的转换规则,比如:
-- -------------------- ---- ------- ----- --------- - --------- ----------------- ------------------ - -------- -------- ----- ----- -- --------------------- ----- ----- - ----- -------------------------------- ---------------- ------------------------ ----- ----- -- - -- ----- ----- --- ------------------------- -- -- ---------------------------------------- --
上面的代码中,我们将 img 标签的转换规则指定为 ![,],意思是将 img 标签转换为 Markdown 图片。
转义 HTML 符号
rehype-remark 还提供了 escapeHtml 选项,可以将 HTML 编码的符号转换回来,比如:
-- -------------------- ---- ------- ----- --------- - --------- ----------------- ------------------ - ----------- ----- -- --------------------- ----- ----- - -- ---- -- ------------------------ ----- ----- -- - -- ----- ----- --- ------------------------- -- -- - - --- --
上面的代码中,我们将 escapeHtml 设置为 false,它会将 HTML 编码的符号转换为相应的字符。
总结
本文主要介绍了 npm 包 rehype-remark 的使用方法和常用配置选项。通过本文的介绍,我们可以轻松定制化地将 HTML 转换成 Markdown,提高了前端开发效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5f058b14403f2923b035bef5