# @automattic/eslint-changed 中文文档

规范地址：https://npmcn.com/package/%40automattic/eslint-changed/

版本：2\.1\.7
npm 元数据更新时间：2026-11-06T18:39:00.809Z
中文译文更新时间：2026-11-07T06:54:11.720Z
软件包许可：GPL-2\.0-or-later

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

原始 npm 页面：https://www.npmjs.com/package/%40automattic/eslint-changed
原文对照：https://npmcn.com/package/%40automattic/eslint-changed/?lang=original
项目主页：https://github.com/Automattic/jetpack/tree/HEAD/projects/js-packages/eslint-changed/#readme
源码仓库：https://github.com/Automattic/eslint-changed

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

- 包体积（解压后）：43.8 kB，7 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- 运行依赖：3 个
- peer 依赖：eslint \>=7\.0\.0
- 首次发布：2021-08-13T10:38:34.406Z
- 最新版本发布：2026-10-15T15:29:59.029Z
- 近 30 天下载量：21910（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：20（近 12 个月 4 个）

## 中文简介

在文件上运行 Eslint, 但只报告更改行的警告和错误 .

## 安装

```sh
npm install @automattic/eslint-changed
```

也可以使用：`pnpm add @automattic/eslint-changed`、`yarn add @automattic/eslint-changed`、`bun add @automattic/eslint-changed`

## README

# ESLint 已更改

运行 [ESLint 语录](https://www.npmjs.com/package/eslint) 在文件中,只报告新的警告和错误.

## 安装

通过你最喜欢的JS软件包管理器安装. 注意同伴对eslint的依赖.

譬如说,

```
npm install @automattic/eslint-changed eslint
```

## 使用量

为了确定变化, `eslint-changed` 需要文件的新旧版本以及文件之间的 diff 输出 ESLint . 如果你使用git,它可以自动决定这一点. 否则,您可以手动提供必要的信息.

两种模式中使用的选项如下:

-   `--debug`: 启用调试输出 .
-   `--ext <list>`: JavaScript 文件扩展名的逗号分隔列表. 如果列出文件则忽略 。 (默认:".js")
-   `--format <name>`: 用于输出的ESLint格式. (默认:"时髦")
-   `--in-diff-only`: 仅在diff中更改的行上包含消息. 这可能会错过像删除一个 `var` 导致新的 `no-undef` 别的地方.

### 手动 diff

以下选项以手动模式使用 :

-   `--diff <file>`: 包含更改的统一 diff 的文件.
-   `--diff-base <dir>`: diff 相对的基础目录. 当前目录的默认值 .
-   `--eslint-orig <file>`:一个在未修改文件上包含 Eslint 的 JSON 输出的文件.
-   `--eslint-new <file>`:一个包含已更改文件上的 Eslint 的 JSON 输出的文件.

### 与 gi

在git模式下, `eslint-changed` 需要能够运行 `git`。如果在 shell 路径中没有这个名称, 设置环境变量 `GIT` 视情况而定.

以下选项使用 git 模式 :

-   `--git`:表示您正在使用 git 模式.
-   `--git-staged`: 将已上演的版本与HEAD版本相提并论(这是默认的).
-   `--git-unstaged`: 将工作副本版本与已上演(或HEAD)版本进行比较.
-   `--git-base <ref>`: 将 HEAD 版本与不同基数(如分支)的HEAD相比较.
-   `--eslint-options <name=value...>`:通过ESLint的额外选项. 如果可能的话,价值被解释为JSON,否则它就被当作一字串来对待. 关于现有选项的详细情况,见https://eslint.org/docs/latest/integrate/nodejs-api#-new-eslintopters(或相当于正在使用的eslint版本).

## 实例

这将将分阶段的变动与总部进行比较.

```bash
npx @automattic/eslint-changed --git
```

这将与源/源比较.

```bash
npx @automattic/eslint-changed --git --git-base origin/trunk
```

这与前一个例子大同小异,但手动操作. 如果你用的是别的东西,你可能会这样做.

```bash
# Produce a diff.
git diff origin/trunk...HEAD > /tmp/diff

# Check out the merge-base of origin/trunk and HEAD.
git checkout origin/trunk...HEAD

# Run ESLint.
npx eslint --format=json . > /tmp/eslint.orig.json

# Go back to HEAD.
git checkout -

# Run ESLint again.
npx eslint --format=json . > /tmp/eslint.new.json

# Run eslint-changed.
npx @automattic/eslint-changed --diff /tmp/diff --eslint-orig /tmp/eslint.orig.json --eslint=new /tmp/eslint.new.json
```

请注意,为了与上述完全相同,您想从diff中取出文件列表,而不是将所有文件都闪烁. 但是,这将工作.

这将将文件.js 与来源/ trunk 进行比较, 与通过等同 `--flag v10_config_lookup_from_file` 改为 `eslint`。 。 。 .

```bash
npx @automattic/eslint-changed --git --git-base origin/trunk --eslint-options flags='["v10_config_lookup_from_file"]' -- file.js
```

## 灵感

我们一直在使用 [已更改](https://packagist.org/packages/sirbrillig/phpcs-changed) 有一阵子了 也想让ESLint也一样.

## 常见问题

### @automattic/eslint-changed 是什么？

在文件上运行 Eslint, 但只报告更改行的警告和错误 \.

### 如何安装 @automattic/eslint-changed？

在项目目录运行 npm install @automattic/eslint-changed，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：eslint（\>=7\.0\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。它还提供命令行工具 eslint-changed，可以用 npx eslint-changed 直接运行。

### @automattic/eslint-changed 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/automattic\_\_eslint-changed 是否存在。

### @automattic/eslint-changed 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @automattic/eslint-changed 可以商用吗？

@automattic/eslint-changed 使用 GPL-2\.0-or-later 许可。强 Copyleft：分发包含该代码的软件时，整个作品需以兼容的 GPL 许可开源。仅在内部使用、不对外分发时不触发此义务。以上为概括，不构成法律意见，请以许可原文为准。

### @automattic/eslint-changed 的下载量有多少？

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

### @automattic/eslint-changed 还在维护吗？

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

