版本

忽略檔案

您可以透過以下方式在 linting 時設定 ESLint 忽略某些檔案和目錄,方法是在以下方式中指定一個或多個 glob 模式

  • 在您的 eslint.config.js 檔案內。
  • 在命令列上使用 --ignore-pattern

忽略檔案

在您的 eslint.config.js 檔案中,如果 ignores 鍵在設定物件中未使用任何其他鍵,則這些模式會作為全域忽略。以下是一個範例

// eslint.config.js
import { defineConfig, globalIgnores } from "eslint/config";

export default defineConfig([
    globalIgnores([".config/*"])
]);

此設定指定應忽略 .config 目錄中的所有檔案。此模式是在預設模式 ["**/node_modules/", ".git/"] 之後新增的。

您也可以使用 --ignore-pattern 在命令列上忽略檔案,例如

npm

npx eslint . --ignore-pattern '.config/*' 

yarn

yarn dlx eslint . --ignore-pattern '.config/*' 

pnpm

pnpm dlx eslint . --ignore-pattern '.config/*' 

bun

bunx eslint . --ignore-pattern '.config/*' 

忽略目錄

忽略目錄的工作方式與忽略檔案相同,方法是將模式放在沒有其他鍵的設定物件的 ignores 鍵中。例如,以下範例忽略整個 .config 目錄(表示檔案搜尋完全不會遍歷它)

// eslint.config.js
import { defineConfig, globalIgnores } from "eslint/config";

export default defineConfig([
    globalIgnores([".config/"])
]);

.gitignore 不同,像 .config 這樣的忽略模式只會忽略與設定檔位於同一目錄中的 .config 目錄。如果您想遞迴地忽略所有名為 .config 的目錄,則需要使用 **/.config/,如此範例所示

// eslint.config.js
import { defineConfig, globalIgnores } from "eslint/config";

export default defineConfig([
    globalIgnores(["**/.config/"])
]);

取消忽略檔案和目錄

您也可以取消忽略先前模式(包括預設模式)忽略的檔案和目錄。例如,此設定取消忽略 node_modules/mylibrary

// eslint.config.js
import { defineConfig, globalIgnores } from "eslint/config";

export default defineConfig([
    globalIgnores([
        "!node_modules/",           // unignore `node_modules/` directory
        "node_modules/*",           // ignore its content
        "!node_modules/mylibrary/"  // unignore `node_modules/mylibrary` directory
    ])
]);

如果您想忽略目錄,但特定檔案或子目錄除外,則必須使用忽略模式 directory/**/* 而不是 directory/**。模式 directory/** 會忽略整個目錄及其內容,因此遍歷會完全跳過該目錄,並且您無法取消忽略其中的任何內容。

例如,build/** 忽略目錄 build 及其內容,而 build/**/* 僅忽略其內容。如果您想忽略 build 目錄中的所有內容,但 build/test.js 除外,則需要建立如下的設定

// eslint.config.js
import { defineConfig, globalIgnores } from "eslint/config";

export default defineConfig([
    globalIgnores([
        "build/**/*",     // ignore all contents in and under `build/` directory but not the `build/` directory itself
        "!build/test.js"  // unignore `!build/test.js`
    ])
]);

如果您想忽略目錄,但位於目錄下任何層級的特定檔案除外,則也應確保未忽略子目錄。請注意,雖然以 / 結尾的模式僅比對目錄,但不以 / 結尾的模式則同時比對檔案和目錄,因此無法編寫單一模式來僅忽略檔案,但您可以使用兩種模式來達成此目的:一種忽略所有內容,另一種取消忽略子目錄。

例如,此設定忽略 build 目錄及其下所有檔案,但任何層級名為 test.js 的檔案除外

// eslint.config.js
import { defineConfig, globalIgnores } from "eslint/config";

export default defineConfig([
    globalIgnores([
        "build/**/*",        // ignore all contents in and under `build/` directory but not the `build/` directory itself
        "!build/**/*/",      // unignore all subdirectories
        "!build/**/test.js"  // unignore `test.js` files
    ])
]);

您也可以使用 --ignore-pattern 在命令列上取消忽略檔案,例如

npm

npx eslint . --ignore-pattern '!node_modules/' 

yarn

yarn dlx eslint . --ignore-pattern '!node_modules/' 

pnpm

pnpm dlx eslint . --ignore-pattern '!node_modules/' 

bun

bunx eslint . --ignore-pattern '!node_modules/' 

Glob 模式解析

glob 模式的評估方式取決於它們的位置和使用方式

  1. eslint.config.js 檔案中使用 ignores 時,glob 模式是相對於 eslint.config.js 檔案進行評估的。
  2. 當在使用 --config 命令列選項指定的替代設定檔中使用 ignores 時,glob 模式是相對於目前工作目錄進行評估的。
  3. 當使用 --ignore-pattern 時,glob 模式是相對於目前工作目錄進行評估的。

命名全域忽略設定

預設情況下,globalIgnores() 將為設定指派一個代表您忽略的名稱。您可以透過提供 globalIgnores() 的第二個引數來覆寫此名稱,該引數是您想要使用的名稱,而不是預設名稱

// eslint.config.js
import { defineConfig, globalIgnores } from "eslint/config";

export default defineConfig([
    globalIgnores(["build/**/*"], "Ignore build directory")
]);

此範例中的 "Ignore Build Directory" 字串是為全域忽略建立的設定名稱。這對於偵錯目的很有用。

忽略檔案警告

當您將目錄傳遞到 ESLint CLI 時,檔案和目錄會以靜默方式忽略。如果您將特定檔案傳遞給 ESLint,則 ESLint 會建立一個警告,指出該檔案已跳過。例如,假設您有一個 eslint.config.js 檔案,如下所示

// eslint.config.js
import { defineConfig, globalIgnores } from "eslint/config";

export default defineConfig([
    globalIgnores(["foo.js"])
]);

然後您執行

npm

npx eslint foo.js 

yarn

yarn dlx eslint foo.js 

pnpm

pnpm dlx eslint foo.js 

bun

bunx eslint foo.js 

您會看到此警告

foo.js
  0:0  warning  File ignored because of a matching ignore pattern. Use "--no-ignore" to disable file ignore settings or use "--no-warn-ignored" to suppress this warning.

✖ 1 problem (0 errors, 1 warning)

之所以出現此訊息,是因為 ESLint 不確定您是否真的想要 lint 該檔案。如訊息所示,您可以使用 --no-ignore 來省略使用忽略規則。

包含 .gitignore 檔案

如果您想包含來自 .gitignore 檔案或任何其他具有 gitignore 樣式模式的檔案的模式,您可以使用來自 @eslint/compat 套件的 includeIgnoreFile 工具程式。

// eslint.config.js
import { defineConfig } from "eslint/config";
import { includeIgnoreFile } from "@eslint/compat";
import path from "node:path";
import { fileURLToPath } from "node:url";

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const gitignorePath = path.resolve(__dirname, ".gitignore");

export default defineConfig([
    includeIgnoreFile(gitignorePath),
    {
        // your overrides
    }
]);

這會自動載入指定的檔案,並將 gitignore 樣式模式轉換為 ignores glob 模式。

變更語言