@clearfeed-ai/node-html-markdown

中文文档
1.4.4发布于 2026/03/10MITTypeScriptCommonJS近 30 天下载 17.2万

快速 HTML 以标记下跨编译器, 兼容节点和浏览器

中文使用文档
文档目录9 节
  1. 1. 速度
  2. 2. 人的可读性
  3. 安装
  4. 基准
  5. 使用量
  6. 选项
  7. 自定义翻译
  8. 进一步改进
  9. 帮助通缉犯!

npm version NPM Downloads Build Status Coverage Status

节点- html- 标记

NHM是一个 快点 HTML用于标记下转换器,兼容节点和浏览器.

它的建立铭记了以下两个目标:

1. 速度

我们每天都需要转换HTML的千兆字节。 所有我们发现的图书馆的节点都太慢了. 我们考虑使用一种低级语言,但决定尝试写一些会挤出每一点的东西 表现出JIT 我们可以。 最终结果已经足够快了!

2. 人的可读性

我们测试过的其他图书馆产出将在许多条件下破解,产出与许多 重复线条等。 一般来说,在打分取景器之外,结果不容易被读取.

我们采取的方法是: 干净、简洁 得出一致的间隔规则.

安装

<yarn|npm|pnpm> add node-html-markdown

基准

-----------------------------------------------------------------------------

Estimated processing times (fastest to slowest):

  [node-html-markdown (reused instance)]
    100 kB:  17ms
    1 MB:    176ms
    50 MB:   8.80sec
    1 GB:    3min, 0sec
    50 GB:   2hr, 30min, 14sec

  [turndown (reused instance)]
    100 kB:  27ms
    1 MB:    280ms
    50 MB:   13.98sec
    1 GB:    4min, 46sec
    50 GB:   3hr, 58min, 35sec

-----------------------------------------------------------------------------

Speed comparison - node-html-markdown (reused instance) is:

  1.02 times as fast as node-html-markdown
  1.57 times as fast as turndown
  1.59 times as fast as turndown (reused instance)

-----------------------------------------------------------------------------

使用量

import { NodeHtmlMarkdown, NodeHtmlMarkdownOptions } from 'node-html-markdown'


/* ********************************************************* *
 * Single use
 * If using it once, you can use the static method
 * ********************************************************* */

// Single file
NodeHtmlMarkdown.translate(
  /* html */ `<b>hello</b>`, 
  /* options (optional) */ {}, 
  /* customTranslators (optional) */ undefined,
  /* customCodeBlockTranslators (optional) */ undefined
);

// Multiple files
NodeHtmlMarkdown.translate(
  /* FileCollection */ { 
    'file1.html': `<b>hello</b>`, 
    'file2.html': `<b>goodbye</b>` 
  }, 
  /* options (optional) */ {}, 
  /* customTranslators (optional) */ undefined,
  /* customCodeBlockTranslators (optional) */ undefined
);


/* ********************************************************* *
 * Re-use
 * If using it several times, creating an instance saves time
 * ********************************************************* */

const nhm = new NodeHtmlMarkdown(
  /* options (optional) */ {}, 
  /* customTransformers (optional) */ undefined,
  /* customCodeBlockTranslators (optional) */ undefined
);

// Single file
nhm.translate(/* html */ `<b>hello</b>`);

// Multiple Files
nhm.translate(
  /* FileCollection */ { 
    'file1.html': `<b>hello</b>`, 
    'file2.html': `<b>goodbye</b>` 
  }, 
);

选项


export interface NodeHtmlMarkdownOptions {
  /**
   * Use native window DOMParser when available
   * @default false
   */
  preferNativeParser: boolean,

  /**
   * Code block fence
   * @default ```
   */
  codeFence: string,

  /**
   * Bullet marker
   * @default *
   */
  bulletMarker: string,

  /**
   * Style for code block
   * @default fence
   */
  codeBlockStyle: 'indented' | 'fenced',

  /**
   * Emphasis delimiter
   * @default _
   */
  emDelimiter: string,

  /**
   * Strong delimiter
   * @default **
   */
  strongDelimiter: string,

  /**
   * Strike delimiter
   * @default ~~
   */
  strikeDelimiter: string,

  /**
   * Supplied elements will be ignored (ignores inner text does not parse children)
   */
  ignore?: string[],

  /**
   * Supplied elements will be treated as blocks (surrounded with blank lines)
   */
  blockElements?: string[],

  /**
   * Max consecutive new lines allowed
   * @default 3
   */
  maxConsecutiveNewlines: number,

  /**
   * Line Start Escape pattern
   * (Note: Setting this will override the default escape settings, you might want to use textReplace option instead)
   */
  lineStartEscape: [ pattern: RegExp, replacement: string ]

  /**
   * Global escape pattern
   * (Note: Setting this will override the default escape settings, you might want to use textReplace option instead)
   */
  globalEscape: [ pattern: RegExp, replacement: string ]

  /**
   * User-defined text replacement pattern (Replaces matching text retrieved from nodes)
   */
  textReplace?: [ pattern: RegExp, replacement: string ][]

  /**
   * Keep images with data: URI (Note: These can be up to 1MB each)
   * @example
   * <img src="data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSK......0o/">
   * @default false
   */
  keepDataImages?: boolean

  /**
   * Place URLS at the bottom and format links using link reference definitions
   *
   * @example
   * Click <a href="/url1">here</a>. Or <a href="/url2">here</a>. Or <a href="/url1">this link</a>.
   *
   * Becomes:
   * Click [here][1]. Or [here][2]. Or [this link][1].
   *
   * [1]: /url
   * [2]: /url2
   */
  useLinkReferenceDefinitions?: boolean

  /**
   * Wrap URL text in < > instead of []() syntax.
   * 
   * @example
   * The input <a href="https://google.com">https://google.com</a>
   * becomes <https://google.com>
   * instead of [https://google.com](https://google.com)
   * 
   * @default true
   */
  useInlineLinks?: boolean
}

自定义翻译

自定义翻译是允许以特定方式处理某些元素的高级选项.

可通过 NodeHtmlMarkdown#translators 属性,或创建时添加.

关于如何使用它们的细节,见数字 :

这个 NodeHtmlMarkdown#codeBlockTranslators 属性是处理 a 内元素的翻译器集合 <pre><code> 块.

进一步改进

作为一个以表演为中心的图书馆,我们总是对进一步改进感兴趣. 有几种可能的途径,我们可以通过这些途径取得比目前模式更大的业绩.

这些方法包括:

  • 写入自定义解析器
  • 整合一个基于合成工字的多线程模型
  • 完全替换任何剩余的正则克

执行这些将很有趣;然而,目前,目前的图书馆对我来说已经足够快了。 那个 说,我欢迎讨论 和任何公关 努力进一步改善业绩, 我最终可能做更多的 将来要以此身份工作!

帮助通缉犯!

想做贡献吗? 看看我们 需要帮助 列出一个良好的起始位置 !

版本与发布记录

@clearfeed-ai/node-html-markdown 共发布 4 个版本,首次发布于 2024/12/05;过去 12 个月发布了 1 个版本。

版本发布日期距今
1.4.4latest2026/03/108 个月前
1.4.32025/09/161.1 年前
1.4.22025/09/161.1 年前
1.4.12024/12/051.9 年前

关于 @clearfeed-ai/node-html-markdown 的常见问题

@clearfeed-ai/node-html-markdown 是什么?

快速 HTML 以标记下跨编译器, 兼容节点和浏览器

如何安装 @clearfeed-ai/node-html-markdown?

在项目目录运行 npm install @clearfeed-ai/node-html-markdown,或使用 pnpm add / yarn add / bun add。

@clearfeed-ai/node-html-markdown 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@clearfeed-ai/node-html-markdown 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@clearfeed-ai/node-html-markdown 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=10.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@clearfeed-ai/node-html-markdown 可以商用吗?

@clearfeed-ai/node-html-markdown 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@clearfeed-ai/node-html-markdown 的下载量有多少?

根据 npm 官方下载统计,@clearfeed-ai/node-html-markdown 在 2026/10/10 – 2026/11/08 这 30 天内被下载 172,264 次,日均约 5,742 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@clearfeed-ai/node-html-markdown 还在维护吗?

最新版本 1.4.4 发布于 2026/03/10(8 个月前);至今共发布 4 个版本,其中过去 12 个月发布了 1 个;首次发布于 2024/12/05。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。