# eslint-visitor-keys 中文文档

规范地址：https://npmcn.com/package/eslint-visitor-keys/

版本：5\.0\.1
npm 元数据更新时间：2026-02-20T14:40:48.205Z
中文译文更新时间：2026-11-04T10:00:37.446Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/eslint-visitor-keys
原文对照：https://npmcn.com/package/eslint-visitor-keys/?lang=original
项目主页：https://github.com/eslint/js/blob/main/packages/eslint-visitor-keys/README.md
源码仓库：https://github.com/eslint/js

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

- 包体积（解压后）：31.9 kB，9 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：^20\.19\.0 \|\| ^22\.13\.0 \|\| \>=24
- 运行依赖：0 个
- 首次发布：2017-11-17T08:52:53.415Z
- 最新版本发布：2026-02-20T14:40:47.824Z
- 近 30 天下载量：1528294554（2026-10-04 至 2026-11-02，npm 官方下载统计）
- 已发布版本数：21（近 12 个月 2 个）

## 中文简介

关于遍历AST的访问者键的常量和实用程序。

## 安装

```sh
npm install eslint-visitor-keys
```

也可以使用：`pnpm add eslint-visitor-keys`、`yarn add eslint-visitor-keys`、`bun add eslint-visitor-keys`

## README

# eslint-visitor-keys

[![npm version](https://img.shields.io/npm/v/eslint-visitor-keys.svg)](https://www.npmjs.com/package/eslint-visitor-keys) [![Downloads/month](https://img.shields.io/npm/dm/eslint-visitor-keys.svg)](http://www.npmtrends.com/eslint-visitor-keys) [![Build Status](https://github.com/eslint/js/workflows/CI/badge.svg)](https://github.com/eslint/js/actions)

关于遍历AST的访问者键的常量和实用程序。

## 💿安装

使用 [npm](https://www.npmjs.com/) 安装。

```bash
$ npm install eslint-visitor-keys
```

### 需求

-   [node . js](https://nodejs.org/) `^20.19.0`， `^22.13.0`,或 `>=24`

## 📖用法

在ESM文件中使用：

```js
import * as evk from "eslint-visitor-keys";
```

在CommonJS文件中使用：

```js
const evk = require("eslint-visitor-keys");
```

### evk。键

> 类型: `{ [type: string]: string[] | undefined }`

客人的钥匙。这些钥匙冻住了。

这是一个物体。键是的类型 [ESTree](https://github.com/estree/estree) 节点。它们的值是一个具有子节点的属性名数组。

例如:

```
console.log(evk.KEYS.AssignmentExpression) // → ["left", "right"]
```

### evk.getKeys(节点)

> 类型: `(node: object) => string[]`

获取给定AST节点的访问者键。

这类似于 `Object.keys(node)` 的标准，但一些关键字被排除在外： `parent`， `leadingComments`， `trailingComments`，以及以。开头的名字 `_`。

这将用于遍历未知节点。

例如:

```js
const node = {
    type: "AssignmentExpression",
    left: { type: "Identifier", name: "foo" },
    right: { type: "Literal", value: 0 },
};
console.log(evk.getKeys(node)); // → ["type", "left", "right"]
```

### evk.unionWith (additionalKeys)

> 类型: `(additionalKeys: object) => { [type: string]: string[] | undefined }`

使联合集与 `evk.KEYS` 以及给定的键。

-   键的顺序是， `additionalKeys` 那是刚开始吗 `evk.KEYS` 在此之后连接。
-   它删除重复的键，保留第一个键。

例如:

```js
console.log(
    evk.unionWith({
        MethodDefinition: ["decorators"],
    }),
); // → { ..., MethodDefinition: ["decorators", "key", "value"], ... }
```

## 📰变更日志

看到 [GitHub版本](https://github.com/eslint/js/releases)。

## 🍻贡献

受欢迎的。看到 [ESLint贡献指南](https://eslint.org/docs/developer-guide/contributing/)。

### 开发的命令

-   `npm test` 运行测试并度量代码覆盖率。
-   `npm run lint` 用ESLint检查源代码。
-   `npm run test:open-coverage` 使用默认浏览器打开前一个测试的代码覆盖率报告。

## 赞助商

以下公司、组织和个人支持ESLint的持续维护和开发。 [成为赞助商](https://eslint.org/donate) 把你的标志印在我们的自述上 [网站](https://eslint.org/sponsors)。

### 白金赞助商

[![Automattic](https://images.opencollective.com/automattic/d0ef3e1/logo.png)](https://automattic.com/)

### 黄金赞助商

[![Qlty Software](https://images.opencollective.com/qltysh/33d157d/logo.png)](https://qlty.sh/) [![Shopify](https://avatars.githubusercontent.com/u/8085)](https://shopify.engineering/)

### 银赞助商

[![Vite](https://images.opencollective.com/vite/d472863/logo.png)](https://vite.dev/) [![Liftoff](https://images.opencollective.com/liftoff/2d6c3b6/logo.png)](https://liftoff.io/) [![StackBlitz](https://avatars.githubusercontent.com/u/28635252)](https://stackblitz.com/)

### 青铜赞助商

[![Cybozu](https://images.opencollective.com/cybozu/933e46d/logo.png)](https://cybozu.co.jp/) [![SAP](https://avatars.githubusercontent.com/u/2531208)](https://opensource.sap.com/) [![CrawlJobs](https://images.opencollective.com/crawljobs-poland/fa43a17/logo.png)](https://www.crawljobs.com/) [![Depot](https://images.opencollective.com/depot/39125a1/logo.png)](https://depot.dev/) [![N-iX Ltd](https://images.opencollective.com/n-ix-ltd/575a7a5/logo.png)](https://www.n-ix.com/) [![Icons8](https://images.opencollective.com/icons8/7fa1641/logo.png)](https://icons8.com/) [![Discord](https://images.opencollective.com/discordapp/f9645d9/logo.png)](https://discord.com/) [![GitBook](https://avatars.githubusercontent.com/u/7111340)](https://www.gitbook.com/) [![HeroCoders](https://avatars.githubusercontent.com/u/37549774)](https://herocoders.com/) [![TestMu AI Open Source Office (Formerly LambdaTest)](https://avatars.githubusercontent.com/u/171592363)](https://www.lambdatest.com/)

### 技术赞助商

技术赞助商允许我们免费使用他们的产品和服务，作为对开源生态系统和我们工作的贡献的一部分。

[![Netlify](https://raw.githubusercontent.com/eslint/eslint.org/main/src/assets/images/techsponsors/netlify-icon.svg)](https://netlify.com/) [![Algolia](https://raw.githubusercontent.com/eslint/eslint.org/main/src/assets/images/techsponsors/algolia-icon.svg)](https://algolia.com/) [![1Password](https://raw.githubusercontent.com/eslint/eslint.org/main/src/assets/images/techsponsors/1password-icon.svg)](https://1password.com/)

## 常见问题

### eslint-visitor-keys 是什么？

关于遍历AST的访问者键的常量和实用程序。

### 如何安装 eslint-visitor-keys？

在项目目录运行 npm install eslint-visitor-keys，或使用 pnpm add / yarn add / bun add。

### eslint-visitor-keys 支持 TypeScript 吗？

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

### eslint-visitor-keys 支持 ESM 还是 CommonJS？

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

### eslint-visitor-keys 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js ^20\.19\.0 \|\| ^22\.13\.0 \|\| \>=24。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### eslint-visitor-keys 可以商用吗？

eslint-visitor-keys 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### eslint-visitor-keys 的下载量有多少？

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

### eslint-visitor-keys 还在维护吗？

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

