@automattic/eslint-changed

中文文档
2.1.7发布于 2026/10/15GPL-2.0-or-laterES Module构建来源已验证近 30 天下载 2.2万

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

中文使用文档
文档目录6 节
  1. 安装
  2. 使用量
  3. 手动 diff
  4. 与 gi
  5. 实例
  6. 灵感

ESLint 已更改

运行 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版本).

实例

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

npx @automattic/eslint-changed --git

这将与源/源比较.

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

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

# 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。 。 。 .

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

灵感

我们一直在使用 已更改 有一阵子了 也想让ESLint也一样.

版本与发布记录

@automattic/eslint-changed 共发布 20 个版本,首次发布于 2021/08/13;过去 12 个月发布了 4 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.1.7latest2026/10/1523 天前
2.1.62026/02/258 个月前
2.1.52025/12/0511 个月前
2.1.42025/11/2511 个月前
2.1.32025/10/171.1 年前
2.1.22025/08/071.3 年前

其他发布通道:alpha → 2.0.2-alpha。

关于 @automattic/eslint-changed 的常见问题

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