版本

設定語言選項(已棄用)

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 Worker 全域變數。
  • 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

變更語言