版本

設定語言選項

JavaScript 生態系統有多種執行環境、版本、擴充功能和框架。這些每個都可能具有不同的支援語法和全域變數。ESLint 讓您可以設定專案中使用的 JavaScript 特定語言選項,例如自訂全域變數。您也可以使用外掛程式擴充 ESLint 以支援您專案的語言選項。

指定 JavaScript 選項

ESLint 允許您指定想要支援的 JavaScript 語言選項。預設情況下,ESLint 預期最新的 stage 4 ECMAScript 語法和 ECMAScript 模組 (ESM) 模式。您可以使用 languageOptions 鍵並指定下列一或多個屬性來覆寫這些設定

  • ecmaVersion (預設值:"latest") - 指示程式碼檢查的 ECMAScript 版本,決定語法和可用的全域變數。針對 ECMAScript 3 和 5 分別設定為 35。否則,您可以使用 2015 到現在之間的任何年份。在大多數情況下,我們建議使用預設值 "latest",以確保您始終使用最新的 ECMAScript 版本。
  • sourceType (預設值:"module") - 指示所使用的 JavaScript 檔案模式。可能的值為
    • module - ESM 模組 (當 ecmaVersion35 時無效)。您的程式碼具有模組範圍並以嚴格模式執行。
    • commonjs - CommonJS 模組 (如果您的程式碼使用 require() 時很有用)。您的程式碼具有頂層函式範圍並以非嚴格模式執行。
    • script - 非模組。您的程式碼具有共用的全域範圍並以非嚴格模式執行。

這是一個範例 設定檔,您可以在檢查 ECMAScript 5 程式碼時使用

// eslint.config.js
export default [
    {
        languageOptions: {
            ecmaVersion: 5,
            sourceType: "script"
        }
    }
];

指定解析器選項

如果您使用內建的 ESLint 解析器,您可以透過指定 languageOptions.parserOptions 鍵來額外變更 ESLint 解釋程式碼的方式。所有選項的預設值都是 false

  • allowReserved - 允許使用保留字作為識別符號 (如果 ecmaVersion3)。
  • ecmaFeatures - 一個物件,指示您想要使用的其他語言功能
    • globalReturn - 允許在全域範圍中使用 return 陳述式
    • impliedStrict - 啟用全域 嚴格模式 (如果 ecmaVersion5 或更高版本)
    • jsx - 啟用 JSX

這是一個範例 設定檔,可在預設解析器中啟用 JSX 解析

// eslint.config.js
export default [
    {
        languageOptions: {
            parserOptions: {
                ecmaFeatures: {
                    jsx: true
                }
            }
        }
    }
];

指定全域變數

ESLint 的某些核心規則依賴於您的程式碼在執行階段可用的全域變數知識。由於這些在不同環境之間差異很大,並且可以在執行階段修改,因此 ESLint 不會假設您的執行環境中存在哪些全域變數。如果您想使用需要知道有哪些全域變數可用的規則,您可以在設定檔中或使用原始程式碼中的設定註解來定義全域變數。

使用設定註解

若要使用 JavaScript 檔案中的註解指定全域變數,請使用以下格式

/* global var1, var2 */

這定義了兩個全域變數 var1var2。如果您想選擇性地指定可以寫入 (而不是只能讀取) 這些全域變數,則可以使用 "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
            }
        }
    }
];
變更語言