忽略檔案 (已棄用)
您可以設定 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
來檢查該檔案。