automattic/eslint-changed

描述

v2.0.9 2024-08-29 19:01 UTC

README

在文件上运行ESLint,只报告新警告和错误。

安装

通过您喜欢的JS包管理器安装。注意对eslint的依赖。

例如,

npm install @automattic/eslint-changed eslint

用法

为了识别更改,eslint-changed需要文件的旧版和新版的ESLint输出,以及它们之间的差异。如果您使用git,它可以自动确定这一点。否则,您可以手动提供必要的信息。

两种模式都使用的选项

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

手动差异

以下选项用于手动模式

  • --diff <file>:包含更改的统一差异的文件。
  • --diff-base <dir>:差异相对于的基本目录。默认为当前目录。
  • --eslint-orig <file>:包含在未更改文件上ESLint JSON输出的文件。
  • --eslint-new <file>:包含在更改文件上ESLint JSON输出的文件。

使用git

在git模式下,eslint-changed需要能够运行git。如果此名称在shell路径中不可用,请设置环境变量GIT

以下选项用于手动模式

  • --git:表示您正在使用git模式。
  • --git-staged:将暂存版本与HEAD版本比较(这是默认值)。
  • --git-unstaged:将工作副本版本与暂存(或HEAD)版本比较。
  • --git-base <ref>:将HEAD版本与不同基本(例如分支)的HEAD比较。

示例

这将比较暂存更改与HEAD。

npx @automattic/eslint-changed --git

这将比较HEAD与origin/trunk。

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

这与前面的示例几乎一样,但手动进行。如果您使用的是git之外的东西,您可能做的是这样。

# 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

请注意,为了与上面完全相同,您可能想要从差异中提取文件列表,而不是检查所有内容。但这将起作用。

灵感

我们使用了一段时间的phpcs-changed,并希望为ESLint实现相同的功能。