NodeJS中html转markdown

turndown 库

javascript 复制代码
const TurndownService = require('turndown');
const turndownService = new TurndownService();

const htmlContent = '<h1>Hello, World!</h1><p>This is a <em>paragraph</em>.</p>';
const markdownContent = turndownService.turndown(htmlContent);

console.log(markdownContent);

用 Turndown 的 addRule 方法添加自定义规则

javascript 复制代码
const TurndownService = require("turndown");
const turndownService = new TurndownService();
// 添加处理标题的规则
turndownService.addRule("heading", {
	filter: ["h1", "h2", "h3", "h4", "h5", "h6"],
	replacement: function (content, node, options) {
		var hLevel = Number(node.nodeName.charAt(1));
		return Array(hLevel + 1).join("#") + " " + content + "\n";
	},
});
// 添加处理代码块的规则
turndownService.addRule('code', {
    filter: function (node) {
      return (node.tagName === 'PRE' && node.firstChild && node.firstChild.tagName === 'CODE' && node.firstChild.className);
    },
    replacement: function (content, node, options) {
      var lang = node.firstChild.className.match(/language-(\w+)/);
      if (lang) {
        return '\n```' + lang[1] + '\n' + node.firstChild.textContent + '\n```\n';
      }
      return '\n```\n' + node.firstChild.textContent + '\n```\n';
    }
  });

让 Turndown 识别 <code> 标签中的类名,比如 <pre><code class="prism language-js"> )并根据类名来确定代码块的语言,你可以在处理代码块的规则中进行相应的修改。

相关推荐
ttod_qzstudio1 小时前
深入理解 Vue 3 的 h 函数:构建动态 UI 的利器
前端·vue.js
芳草萋萋鹦鹉洲哦1 小时前
【elemen/js】阻塞UI线程导致的开关卡顿如何优化
开发语言·javascript·ui
_大龄1 小时前
前端解析excel
前端·excel
1***s6321 小时前
Vue图像处理开发
javascript·vue.js·ecmascript
槁***耿2 小时前
JavaScript在Node.js中的事件发射器
开发语言·javascript·node.js
一叶茶2 小时前
移动端平板打开的三种模式。
前端·javascript
前端大卫2 小时前
一文搞懂 Webpack 分包:async、initial 与 all 的区别【附源码】
前端
U***49832 小时前
JavaScript在Node.js中的Strapi
开发语言·javascript·node.js
Want5952 小时前
HTML音乐圣诞树
前端·html
老前端的功夫2 小时前
前端浏览器缓存深度解析:从网络请求到极致性能优化
前端·javascript·网络·缓存·性能优化