# @clearfeed-ai/node-html-markdown 中文文档

规范地址：https://npmcn.com/package/%40clearfeed-ai/node-html-markdown/

版本：1\.4\.4
npm 元数据更新时间：2026-05-16T10:14:35.953Z
中文译文更新时间：2026-11-10T00:50:59.810Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40clearfeed-ai/node-html-markdown
原文对照：https://npmcn.com/package/%40clearfeed-ai/node-html-markdown/?lang=original
项目主页：https://github.com/crosstype/node-html-markdown#readme
源码仓库：https://github.com/crosstype/node-html-markdown

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：104 kB，27 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=10\.0\.0
- 运行依赖：1 个
- 首次发布：2024-12-05T05:10:41.501Z
- 最新版本发布：2026-03-10T05:33:16.845Z
- 近 30 天下载量：172264（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：4（近 12 个月 1 个）

## 中文简介

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

## 安装

```sh
npm install @clearfeed-ai/node-html-markdown
```

也可以使用：`pnpm add @clearfeed-ai/node-html-markdown`、`yarn add @clearfeed-ai/node-html-markdown`、`bun add @clearfeed-ai/node-html-markdown`

## README

[![npm version](https://badge.fury.io/js/node-html-markdown.svg)](https://badge.fury.io/js/ts-patch) [![NPM Downloads](https://img.shields.io/npm/dm/node-html-markdown.svg?style=flat)](https://npmjs.org/package/node-html-markdown) ![Build Status](https://github.com/crosstype/node-html-markdown/workflows/Build%20\(CI\)/badge.svg) [![Coverage Status](https://coveralls.io/repos/github/crosstype/node-html-markdown/badge.svg?branch=master)](https://coveralls.io/github/crosstype/node-html-markdown?branch=master)

# 节点- html- 标记

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

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

### 1\. 速度

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

### 2\. 人的可读性

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

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

## 安装

```sh
<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)

-----------------------------------------------------------------------------
```

## 使用量

```ts
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>` 
  }, 
);
```

## 选项

```ts

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` 属性,或创建时添加.

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

-   [翻译.ts](https://github.com/crosstype/node-html-markdown/blob/master/src/translator.ts) - 文档 `TranslatorConfig`
-   [配置( t)](https://github.com/crosstype/node-html-markdown/blob/master/src/config.ts) - 翻译 `defaultTranslators`

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

## 进一步改进

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

这些方法包括:

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

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

## 帮助通缉犯!

想做贡献吗? 看看我们 [需要帮助](https://github.com/crosstype/node-html-markdown/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) 列出一个良好的起始位置 !

## 常见问题

### @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 和提交记录判断。

