# @ciolabs/htmlparser2-source 中文文档

规范地址：https://npmcn.com/package/%40ciolabs/htmlparser2-source/

版本：0\.0\.3
npm 元数据更新时间：2025-10-29T22:40:41.005Z
中文译文更新时间：2026-11-09T16:23:37.899Z
软件包许可：Apache-2\.0 WITH Commons-Clause

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

原始 npm 页面：https://www.npmjs.com/package/%40ciolabs/htmlparser2-source
原文对照：https://npmcn.com/package/%40ciolabs/htmlparser2-source/?lang=original
项目主页：https://github.com/customerio/ciolabs/tree/main/packages/htmlparser2-source#readme
源码仓库：https://github.com/customerio/ciolabs

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

- 包体积（解压后）：86.8 kB，9 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：3 个
- 首次发布：2025-09-18T17:04:30.474Z
- 最新版本发布：2025-10-29T22:40:40.781Z
- 近 30 天下载量：30993（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：4（近 12 个月 0 个）

## 中文简介

在 htmlparser2 周围打包器,将源范围信息添加到 AST

## 安装

```sh
npm install @ciolabs/htmlparser2-source
```

也可以使用：`pnpm add @ciolabs/htmlparser2-source`、`yarn add @ciolabs/htmlparser2-source`、`bun add @ciolabs/htmlparser2-source`

## README

# @ciolabs/htmlparser2 来源

> 一个包裹周围 [htmlparser2 软件](https://github.com/fb55/htmlparser2) 将源区域信息添加到 AST 中.

## 安装

```
npm install @ciolabs/htmlparser2-source
```

## 使用量

```typescript
import { parseDocument } from '@ciolabs/htmlparser2-source';

const html = '<div>hello</div>';

const document = parseDocument(html);
```

## API 密码

### 解析文档( 数据, 选项 )

解析 HTML并返回每个元素附有源区域信息的文档.

#### 参数

-   `data` (单位:千美元)`string`) - 分析的 HTML 字符串
-   `options` (单位:千美元)`Options`选项 [htmlparser2 解析器选项](https://github.com/fb55/htmlparser2/wiki/Parser-options) 财务报告和审定财务报表 [多姆汉德勒选项](https://github.com/fb55/domhandler#options)

#### 回返

回返a `SourceDocument` 具有强化元素,包括源范围信息.

## 选项

### `autofix`

这将在缺失的近距离标记中添加到 AST 中. 注意,由于它们不存在源头,它们会有−1的指数位置.

```typescript
import { parseDocument, nodeToString } from '@ciolabs/htmlparser2-source';

const html = '<div>hello';

const document = parseDocument(html, { autofix: true });

console.log(nodeToString(document)); //=> <div>hello</div>
```

## 类型

### 来源元素

包含源区域信息的增强的 HTML 元素 :

```typescript
type SourceElement = {
  source: {
    openTag: {
      startIndex: number;
      endIndex: number;
      data: string;
      name: string;
      isSelfClosing: boolean;
    };
    closeTag: {
      startIndex: number;
      endIndex: number;
      data: string;
      name: string;
    } | null;
    attributes: Array<{
      name: {
        startIndex: number;
        endIndex: number;
        data: string;
      };
      value: {
        startIndex: number;
        endIndex: number;
        data: string;
      } | null;
      quote: '"' | "'" | null | undefined;
      source: {
        startIndex: number;
        endIndex: number;
        data: string;
      };
    }>;
  };
  children: SourceChildNode[];
};
```

### 源文件

带有位置公用设施的强化文件:

```typescript
type SourceDocument = {
  children: SourceChildNode[];
  offsetToPosition(offset: number): { line: number; character: number };
};
```

## 工具函数

### 节点toString( 节点)

将解析的节点转换回其 HTML 字符串表示式.

```typescript
import { parseDocument, nodeToString } from '@ciolabs/htmlparser2-source';

const html = '<div class="test">content</div>';
const document = parseDocument(html);

console.log(nodeToString(document)); // '<div class="test">content</div>'
```

### 类型警卫

软件包导出几种类型的守护功能:

-   `isTag(node)` - 检查节点是否是源元素
-   `isText(node)` - 检查节点是否是一个文本节点
-   `isComment(node)` - 检查节点是否是一个评论节点
-   `isDocument(node)` - 检查节点是否是源文件
-   `isCDATA(node)` - 检查节点是否是CDATA区段
-   `isDirective(node)` - 检查节点是否是一个处理指令
-   `isDoctype(node)` - 检查节点是否为 doctype 声明

## 常见问题

### @ciolabs/htmlparser2-source 是什么？

在 htmlparser2 周围打包器,将源范围信息添加到 AST

### 如何安装 @ciolabs/htmlparser2-source？

在项目目录运行 npm install @ciolabs/htmlparser2-source，或使用 pnpm add / yarn add / bun add。

### @ciolabs/htmlparser2-source 支持 TypeScript 吗？

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

### @ciolabs/htmlparser2-source 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @ciolabs/htmlparser2-source 可以商用吗？

@ciolabs/htmlparser2-source 使用 Apache-2\.0 WITH Commons-Clause 许可。声明的许可为 Apache-2\.0 WITH Commons-Clause，请阅读许可原文确认使用条件。以上为概括，不构成法律意见，请以许可原文为准。

### @ciolabs/htmlparser2-source 的下载量有多少？

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

### @ciolabs/htmlparser2-source 还在维护吗？

最新版本 0\.0\.3 发布于 2025/10/30（1 年前）；至今共发布 4 个版本，其中过去 12 个月发布了 0 个；首次发布于 2025/09/19。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

