版本

忽略檔案 (已棄用)

您可以設定 ESLint 在進行程式碼檢查時忽略特定的檔案和目錄,方法是指定一或多個 glob 模式。您可以使用以下方式忽略檔案

  • ignorePatterns 新增到設定檔。
  • 建立一個專用檔案,其中包含忽略模式 (預設為 .eslintignore)。

設定檔中的 ignorePatterns

您可以使用設定檔中的 ignorePatterns 告知 ESLint 忽略特定的檔案和目錄。ignorePatterns 模式遵循與 .eslintignore 相同的規則。請參閱 .eslintignore 檔案文件 以了解更多資訊。

{
    "ignorePatterns": ["temp.js", "**/vendor/*.js"],
    "rules": {
        //...
    }
}
  • ignorePatterns 中的 Glob 模式是相對於設定檔所在的目錄。
  • 您無法在 overrides 屬性下撰寫 ignorePatterns 屬性。
  • .eslintignore 中定義的模式優先於設定檔的 ignorePatterns 屬性。

如果 glob 模式以 / 開頭,則該模式是相對於設定檔的根目錄。例如,lib/.eslintrc.json 中的 /foo.js 會比對到 lib/foo.js,但不會比對到 lib/subdir/foo.js

如果設定是透過 --config CLI 選項提供的,則設定中以 / 開頭的忽略模式是相對於目前工作目錄,而不是給定設定的根目錄。例如,如果存在 --config configs/.eslintrc.json,則設定中的忽略模式是相對於 .,而不是 ./configs

.eslintignore 檔案

您可以透過在專案的根目錄中建立 .eslintignore 檔案,告知 ESLint 忽略特定的檔案和目錄。.eslintignore 檔案是一個純文字檔案,其中每一行都是一個 glob 模式,指示應從程式碼檢查中省略的路徑。例如,以下省略所有 JavaScript 檔案

**/*.js

當 ESLint 執行時,它會在目前工作目錄中尋找 .eslintignore 檔案,然後再判斷要檢查哪些檔案。如果找到此檔案,則在遍歷目錄時會套用這些偏好設定。一次只能使用一個 .eslintignore 檔案,因此不會使用目前工作目錄以外的 .eslintignore 檔案。

Glob 會使用 node-ignore 進行比對,因此可以使用許多功能

  • # 開頭的行會被視為註解,並且不會影響忽略模式。
  • 路徑是相對於目前工作目錄。透過 --ignore-pattern 命令 傳入的路徑也是如此。
  • ! 開頭的行是否定模式,用於重新包含先前模式忽略的模式。
  • 忽略模式的行為符合 .gitignore 規格

特別值得注意的是,與 .gitignore 檔案一樣,用作 .eslintignore--ignore-pattern 模式的所有路徑都必須使用正斜線作為路徑分隔符號。

# Valid
/root/src/*.js

# Invalid
\root\src\*.js

請參閱 .gitignore 的規格,以取得更多有效語法的範例。

除了 .eslintignore 檔案中的任何模式之外,即使傳遞了 --no-ignore 標誌,ESLint 始終會遵循幾個隱含的忽略規則。隱含規則如下

  • node_modules/ 會被忽略。
  • 點檔案 (.eslintrc.* 除外) 以及點資料夾及其內容都會被忽略。

這些規則也有一些例外情況

  • 如果要檢查的路徑是 glob 模式或目錄路徑,並且包含點資料夾,則會檢查所有點檔案和點資料夾。這包括更深層目錄結構中的點檔案和點資料夾。

    例如,eslint .config/ 會檢查 .config 目錄中的所有點資料夾和點檔案,包括直接子系以及更深層目錄結構中的子系。

  • 如果要檢查的路徑是特定的檔案路徑,並且已傳遞 --no-ignore 標誌,則無論隱含的忽略規則為何,ESLint 都會檢查該檔案。

    例如,eslint .config/my-config-file.js --no-ignore 會導致檢查 my-config-file.js。應該注意的是,沒有 --no-ignore 行的相同命令將不會檢查 my-config-file.js 檔案。

  • 透過 --ignore-pattern.eslintignore 指定的允許清單和拒絕清單規則優先於隱含的忽略規則。

    例如,在這種情況下,.build/test.js 是要允許清單的所需檔案。由於預設會忽略所有點資料夾及其子系,因此必須先將 .build 加入允許清單,以便 eslint 知道其子系。然後,必須明確允許清單 .build/test.js,同時拒絕清單其餘內容。這是透過以下 .eslintignore 檔案完成的

    # Allowlist 'test.js' in the '.build' folder
    # But do not allow anything else in the '.build' folder to be linted
    !.build
    .build/*
    !.build/test.js
    

    以下 --ignore-pattern 也等效

    eslint --ignore-pattern '!.build' --ignore-pattern '.build/*' --ignore-pattern '!.build/test.js' parent-folder/
    

使用替代檔案

如果您希望使用與目前工作目錄中的 .eslintignore 不同的檔案,您可以使用命令列上的 --ignore-path 選項來指定它。例如,您可以使用 .jshintignore 檔案,因為它具有相同的格式

eslint --ignore-path .jshintignore file.js

您也可以使用您的 .gitignore 檔案

eslint --ignore-path .gitignore file.js

可以使用任何遵循標準忽略檔案格式的檔案。請記住,指定 --ignore-path 表示不會使用現有的 .eslintignore 檔案。請注意,.eslintignore 中的 glob 規則遵循 .gitignore 的規則。

在 package.json 中使用 eslintIgnore

如果找不到 .eslintignore 檔案,且未指定替代檔案,則 ESLint 會在 package.json 中尋找 eslintIgnore 鍵,以檢查要忽略的檔案。

{
    "name": "mypackage",
    "version": "0.0.1",
    "eslintConfig": {
        "env": {
            "browser": true,
            "node": true
        }
    },
    "eslintIgnore": ["hello.js", "world.js"]
}

忽略檔案警告

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

foo.js

然後您執行

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 不確定您是否真的想要檢查該檔案。如訊息所示,您可以使用 --no-ignore 來省略使用忽略規則。

考慮另一種情況,您想要在特定的點檔案或點資料夾上執行 ESLint,但忘記在您的 .eslintignore 檔案中明確允許這些檔案。您會執行類似這樣的操作

eslint .config/foo.js

您會看到此警告

.config/foo.js
  0:0  warning  File ignored by default.  Use a negated ignore pattern (like "--ignore-pattern '!<relative/path/to/filename>'") to override

✖ 1 problem (0 errors, 1 warning)

發生此訊息的原因是,通常,此檔案會被 ESLint 的隱含忽略規則忽略 (如上所述)。.eslintignore 檔案中的否定忽略規則會覆寫隱含規則,並重新包含此檔案以進行程式碼檢查。此外,在這種情況下,也可以使用 --no-ignore 來檢查該檔案。

變更語言