版本

設定語言選項 (已棄用)

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

指定環境

環境提供預定義的全域變數。可用的環境如下

  • browser - 瀏覽器全域變數。
  • node - Node.js 全域變數和 Node.js 作用域。
  • commonjs - CommonJS 全域變數和 CommonJS 作用域 (用於僅限瀏覽器且使用 Browserify/WebPack 的程式碼)。
  • shared-node-browser - Node.js 和瀏覽器共用的全域變數。
  • es6 - 啟用所有 ECMAScript 6 功能,模組除外 (這會自動將 ecmaVersion 剖析器選項設定為 6)。
  • es2016 - 新增所有 ECMAScript 2016 全域變數,並自動將 ecmaVersion 剖析器選項設定為 7。
  • es2017 - 新增所有 ECMAScript 2017 全域變數,並自動將 ecmaVersion 剖析器選項設定為 8。
  • es2018 - 新增所有 ECMAScript 2018 全域變數,並自動將 ecmaVersion 剖析器選項設定為 9。
  • es2019 - 新增所有 ECMAScript 2019 全域變數,並自動將 ecmaVersion 剖析器選項設定為 10。
  • es2020 - 新增所有 ECMAScript 2020 全域變數,並自動將 ecmaVersion 剖析器選項設定為 11。
  • es2021 - 新增所有 ECMAScript 2021 全域變數,並自動將 ecmaVersion 剖析器選項設定為 12。
  • es2022 - 新增所有 ECMAScript 2022 全域變數,並自動將 ecmaVersion 剖析器選項設定為 13。
  • es2023 - 新增所有 ECMAScript 2023 全域變數,並自動將 ecmaVersion 剖析器選項設定為 14。
  • es2024 - 新增所有 ECMAScript 2024 全域變數,並自動將 ecmaVersion 剖析器選項設定為 15。
  • worker - web workers 全域變數。
  • amd - 根據 amd 規範,將 require()define() 定義為全域變數。
  • mocha - 新增所有 Mocha 測試全域變數。
  • jasmine - 為 1.3 和 2.0 版本新增所有 Jasmine 測試全域變數。
  • jest - Jest 全域變數。
  • phantomjs - PhantomJS 全域變數。
  • protractor - Protractor 全域變數。
  • qunit - QUnit 全域變數。
  • jquery - jQuery 全域變數。
  • prototypejs - Prototype.js 全域變數。
  • shelljs - ShellJS 全域變數。
  • meteor - Meteor 全域變數。
  • mongo - MongoDB 全域變數。
  • applescript - AppleScript 全域變數。
  • nashorn - Java 8 Nashorn 全域變數。
  • serviceworker - Service Worker 全域變數。
  • atomtest - Atom 測試輔助全域變數。
  • embertest - Ember 測試輔助全域變數。
  • webextensions - WebExtensions 全域變數。
  • greasemonkey - GreaseMonkey 全域變數。

這些環境並非互斥,因此您可以一次定義多個。

環境可以在檔案內、設定檔中或使用 --env 命令列 旗標指定。

使用設定註解

若要使用 JavaScript 檔案內的註解指定環境,請使用以下格式

/* eslint-env node, mocha */

這會啟用 Node.js 和 Mocha 環境。

使用設定檔

若要在設定檔中指定環境,請使用 env 鍵。設定您要啟用的每個環境為 true。例如,以下範例啟用瀏覽器和 Node.js 環境

{
    "env": {
        "browser": true,
        "node": true
    }
}

或在 package.json 檔案中

{
    "name": "mypackage",
    "version": "0.0.1",
    "eslintConfig": {
        "env": {
            "browser": true,
            "node": true
        }
    }
}

以及在 YAML 中

---
  env:
    browser: true
    node: true

使用外掛程式

如果您想要使用來自外掛程式的環境,請務必在 plugins 陣列中指定外掛程式名稱,然後使用不含前綴的外掛程式名稱,後面加上斜線,再接著環境名稱。例如

{
    "plugins": ["example"],
    "env": {
        "example/custom": true
    }
}

或在 package.json 檔案中

{
    "name": "mypackage",
    "version": "0.0.1",
    "eslintConfig": {
        "plugins": ["example"],
        "env": {
            "example/custom": true
        }
    }
}

指定全域變數

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

使用設定註解

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

/* global var1, var2 */

這會定義兩個全域變數 var1var2。如果您想要選擇性地指定這些全域變數可以寫入 (而不僅僅是讀取),則可以將每個變數設定為 "writable" 旗標

/* global var1:writable, var2:writable */

使用設定檔

若要在設定檔內設定全域變數,請將 globals 設定屬性設定為一個物件,其中包含您要使用的每個全域變數的鍵。對於每個全域變數鍵,將對應的值設定為 "writable" 以允許覆寫變數,或設定為 "readonly" 以禁止覆寫。例如

{
    "globals": {
        "var1": "writable",
        "var2": "readonly"
    }
}

以及在 YAML 中

---
  globals:
    var1: writable
    var2: readonly

這些範例允許在您的程式碼中覆寫 var1,但禁止覆寫 var2

可以透過將全域變數的值設定為 "off" 來停用它們。例如,在大多數 ES2015 全域變數都可用,但 Promise 不可用的環境中,您可以使用此設定

{
    "env": {
        "es6": true
    },
    "globals": {
        "Promise": "off"
    }
}

基於歷史原因,布林值 false 和字串值 "readable" 等同於 "readonly"。同樣地,布林值 true 和字串值 "writeable" 等同於 "writable"。但是,不建議使用這些舊值。

指定剖析器選項

ESLint 允許您指定您想要支援的 JavaScript 語言選項。預設情況下,ESLint 預期 ECMAScript 5 語法。您可以覆寫該設定,以啟用對其他 ECMAScript 版本和 JSX 的支援,方法是使用剖析器選項。

請注意,支援 JSX 語法與支援 React 不同。React 將特定的語意應用於 ESLint 無法識別的 JSX 語法。如果您正在使用 React,我們建議使用 eslint-plugin-react

同樣地,支援 ES6 語法與支援新的 ES6 全域變數 (例如,Set 等新類型) 不同。對於 ES6 語法,請使用 { "parserOptions": { "ecmaVersion": 6 } };對於新的 ES6 全域變數,請使用 { "env": { "es6": true } }。設定 { "env": { "es6": true } } 會自動啟用 ES6 語法,但 { "parserOptions": { "ecmaVersion": 6 } } 不會自動啟用 ES6 全域變數。總之,若要僅支援 ES6 語法,請使用 { "parserOptions": { "ecmaVersion": 6 } },若要同時支援 ES6 語法和新的 ES6 全域變數 (例如 Set 等),請使用 { "env": { "es6": true } }

剖析器選項在您的 .eslintrc.* 檔案中使用 parserOptions 屬性設定。可用的選項如下

  • ecmaVersion - 設定為 3、5 (預設)、6、7、8、9、10、11、12、13、14、15 或 16,以指定您想要使用的 ECMAScript 語法版本。您也可以將其設定為 2015 (與 6 相同)、2016 (與 7 相同)、2017 (與 8 相同)、2018 (與 9 相同)、2019 (與 10 相同)、2020 (與 11 相同)、2021 (與 12 相同)、2022 (與 13 相同)、2023 (與 14 相同)、2024 (與 15 相同) 或 2025 (與 16 相同) 以使用基於年份的命名。您也可以設定 "latest" 以使用最新支援的版本。
  • sourceType - 如果您的程式碼位於 ECMAScript 模組中,則設定為 "script" (預設) 或 "module"
  • allowReserved - 允許將保留字用作識別符 (如果 ecmaVersion 為 3)。
  • ecmaFeatures - 一個物件,指示您想要使用的其他語言功能
    • globalReturn - 允許在全域範圍中使用 return 陳述式
    • impliedStrict - 啟用全域 嚴格模式 (如果 ecmaVersion 為 5 或更高版本)
    • jsx - 啟用 JSX

以下是一個 .eslintrc.json 檔案範例

{
    "parserOptions": {
        "ecmaVersion": "latest",
        "sourceType": "module",
        "ecmaFeatures": {
            "jsx": true
        }
    },
    "rules": {
        "semi": "error"
    }
}

設定剖析器選項有助於 ESLint 判斷什麼是剖析錯誤。所有語言選項預設為 false

變更語言