設定語言選項
JavaScript 生態系統有多種執行環境、版本、擴充功能和框架。這些每個都可能具有不同的支援語法和全域變數。ESLint 讓您可以設定專案中使用的 JavaScript 特定語言選項,例如自訂全域變數。您也可以使用外掛程式擴充 ESLint 以支援您專案的語言選項。
指定 JavaScript 選項
ESLint 允許您指定想要支援的 JavaScript 語言選項。預設情況下,ESLint 預期最新的 stage 4 ECMAScript 語法和 ECMAScript 模組 (ESM) 模式。您可以使用 languageOptions
鍵並指定下列一或多個屬性來覆寫這些設定
ecmaVersion
(預設值:"latest"
) - 指示程式碼檢查的 ECMAScript 版本,決定語法和可用的全域變數。針對 ECMAScript 3 和 5 分別設定為3
或5
。否則,您可以使用2015
到現在之間的任何年份。在大多數情況下,我們建議使用預設值"latest"
,以確保您始終使用最新的 ECMAScript 版本。sourceType
(預設值:"module"
) - 指示所使用的 JavaScript 檔案模式。可能的值為module
- ESM 模組 (當ecmaVersion
為3
或5
時無效)。您的程式碼具有模組範圍並以嚴格模式執行。commonjs
- CommonJS 模組 (如果您的程式碼使用require()
時很有用)。您的程式碼具有頂層函式範圍並以非嚴格模式執行。script
- 非模組。您的程式碼具有共用的全域範圍並以非嚴格模式執行。
這是一個範例 設定檔,您可以在檢查 ECMAScript 5 程式碼時使用
// eslint.config.js
export default [
{
languageOptions: {
ecmaVersion: 5,
sourceType: "script"
}
}
];
指定解析器選項
如果您使用內建的 ESLint 解析器,您可以透過指定 languageOptions.parserOptions
鍵來額外變更 ESLint 解釋程式碼的方式。所有選項的預設值都是 false
allowReserved
- 允許使用保留字作為識別符號 (如果ecmaVersion
為3
)。ecmaFeatures
- 一個物件,指示您想要使用的其他語言功能
這是一個範例 設定檔,可在預設解析器中啟用 JSX 解析
// eslint.config.js
export default [
{
languageOptions: {
parserOptions: {
ecmaFeatures: {
jsx: true
}
}
}
}
];
指定全域變數
ESLint 的某些核心規則依賴於您的程式碼在執行階段可用的全域變數知識。由於這些在不同環境之間差異很大,並且可以在執行階段修改,因此 ESLint 不會假設您的執行環境中存在哪些全域變數。如果您想使用需要知道有哪些全域變數可用的規則,您可以在設定檔中或使用原始程式碼中的設定註解來定義全域變數。
使用設定註解
若要使用 JavaScript 檔案中的註解指定全域變數,請使用以下格式
/* global var1, var2 */
這定義了兩個全域變數 var1
和 var2
。如果您想選擇性地指定可以寫入 (而不是只能讀取) 這些全域變數,則可以使用 "writable"
旗標設定每個變數
/* global var1:writable, var2:writable */
使用設定檔
若要在 設定檔 中設定全域變數,請將 languageOptions.globals
設定屬性設定為一個物件,該物件包含以您要使用的每個全域變數命名的鍵。對於每個全域變數鍵,將對應的值設定為 "writable"
以允許覆寫變數,或設定為 "readonly"
以禁止覆寫。例如
// eslint.config.js
export default [
{
languageOptions: {
globals: {
var1: "writable",
var2: "readonly"
}
}
}
];
此設定允許在您的程式碼中覆寫 var1
,但禁止覆寫 var2
。
可以將全域變數的值設定為 "off"
來停用它們。例如,在大多數全域變數都可用但 Promise
不可用的環境中,您可能會使用此設定
// eslint.config.js
export default [
{
languageOptions: {
globals: {
Promise: "off"
}
}
}
];
預先定義的全域變數
除了 ECMAScript 標準內建的全域變數 (它們會根據已設定的 languageOptions.ecmaVersion
自動啟用) 之外,ESLint 不提供預先定義的全域變數集。您可以使用 globals
套件來額外啟用特定環境的所有全域變數。例如,以下說明如何在設定中加入 console
以及其他瀏覽器全域變數。
// eslint.config.js
import globals from "globals";
export default [
{
languageOptions: {
globals: {
...globals.browser
}
}
}
];
您可以使用相同的方式包含多個不同的全域變數集合。以下範例包含網頁瀏覽器和 Jest 的全域變數
// eslint.config.js
import globals from "globals";
export default [
{
languageOptions: {
globals: {
...globals.browser,
...globals.jest
}
}
}
];