# @emmetio/abbreviation 中文文档

规范地址：https://npmcn.com/package/%40emmetio/abbreviation/

版本：2\.3\.3
npm 元数据更新时间：2023-05-10T07:57:01.321Z
中文译文更新时间：2026-11-13T15:33:59.296Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40emmetio/abbreviation
原文对照：https://npmcn.com/package/%40emmetio/abbreviation/?lang=original
项目主页：https://github.com/emmetio/emmet#readme
源码仓库：https://github.com/emmetio/emmet

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

- 包体积（解压后）：164 kB，16 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2016-11-11T22:49:43.226Z
- 最新版本发布：2023-05-10T07:57:01.073Z
- 近 30 天下载量：22034569（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：45（近 12 个月 0 个）

## 中文简介

独立缩写解析器

## 安装

```sh
npm install @emmetio/abbreviation
```

也可以使用：`pnpm add @emmetio/abbreviation`、`yarn add @emmetio/abbreviation`、`bun add @emmetio/abbreviation`

## README

# 缩写解析器

给 Emmet 解析 _标记_ 缩写为AST. 解析分两步进行:先是将给定的缩写符号化(在编辑器中用于语法加亮),再将符号分析出并转换为AST节点作为平原,JSON-串行对象.

注意 AST 树在多数情况下不能直接用于输出: 例如, AST 节点来自 `.foo.bar` 元素缺失元素名称并包含两个 `class` 属性为 `foo` 财务报告和审定财务报表 `bar` 数值(不是单个) `class` 与 `foo bar` 数值).

## 使用量

您可以通过 npm 安装 :

```bash
npm install @emmetio/abbreviation
```

然后把它添加到你的项目中:

```js
import parse from '@emmetio/abbreviation';

const tree = parse('div#foo>span.bar*3');
/* {
    type: 'Abbreviation',
    children: [{
        type: 'AbbreviationNode',
        name: 'div',
        attributes: [...],
        children: [...]
    }]
} */

```

返回的树包含 `AbbreviationNode` 项:带有名称、属性和/或文本内容的节点。 例如,一个可以用某种方式表示的要素。 重复和分组节点类似 `a>(b+c)*3` 自动转换和复制 `AbbreviationNode` 具有显著的 `.repeat` 在重复序列中识别节点的属性.

## 缩略语法

Emmet 缩写元素有以下基本部分:

```
name.class#id[attributes?, ...]{text value}*repeater/
```

-   `name` ——元素名称,例如 `div`, (中文(简体) ), `span` 等。存储为 `node.name` 属性.
-   `[attributes]` ——属性列表. 每个属性被存储为 [`AbbreviationAttribute`](https://npmcn.com/src/types.ts) 实例,并可以通过 `node.getAttribute(name)`。每个属性可以不同格式书写:
    -   `attr` ——带有空值的属性.
    -   `attr=value` ——具有价值的属性. 这个 `value` 可能包含除空格或 `]`。 。 。 .
    -   `attr="value"` 或者说 `attr='value'` ——引文中带有值的属性. 引文会自动去除. 表达值如 `attr={value}` 被支持和可以通过 `valueType: "expression"` 属性.
    -   `attr.` ——布尔属性,如无值属性,如 `required` 内 `<input>`。 。 。 .
    -   `!attr` - 隐含属性,如果其值不为空会输出出. 作为占位符用于在输出中保存属性顺序.
    -   `./non/attr/value` ——默认属性值. 换句话说,任何与属性名称字符不符的东西。 也可以是单词或双词. 默认属性存储于 `null` 作为名称,并应在稍后使用,例如用来解决预先定义的属性.
-   `.class` ——简称: `class` 属性。 注意一个元素可以有多个类,例如 `.class1.class2.class3`。 。 。 .
-   `#id` ——简称: `id` 属性.
-   `{text}` - 节点的文本内容
-   `*N` — 元素中继器, 告诉 parser 要创建 `N` 复制给定节点.
-   `/` ——可选自闭接线员. 标记元素为 `node.selfClosing = true`。 。 。 .

### 运算符

缩略语的每个要素必须与其中任何一种操作符分开:

```
elem1+elem2>elem3
```

-   `+` ——兄弟会操作员,在树上添加下个元素作为当前元素的下个兄弟会.
-   `>` ——儿童操作员,将下一个元素作为当前元素的孩子添加.
-   `^` ——爬升操作员,作为当前元素的父节点的孩子添加下个元素. 允许多个爬升操作员,每个操作员会将一个关卡按树向上移动.

### 组

一套要素可采用 `()`,主要用于重复和更容易的元素嵌入:

```
a>(b>c+d)*4+(e+f)
```

组合可选择与 `+` 操作员.

## 常见问题

### @emmetio/abbreviation 是什么？

独立缩写解析器

### 如何安装 @emmetio/abbreviation？

在项目目录运行 npm install @emmetio/abbreviation，或使用 pnpm add / yarn add / bun add。

### @emmetio/abbreviation 支持 TypeScript 吗？

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

### @emmetio/abbreviation 支持 ESM 还是 CommonJS？

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

### @emmetio/abbreviation 可以商用吗？

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

### @emmetio/abbreviation 的下载量有多少？

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

### @emmetio/abbreviation 还在维护吗？

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

