設定語言選項 (已棄用)
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 */
這會定義兩個全域變數 var1
和 var2
。如果您想要選擇性地指定這些全域變數可以寫入 (而不僅僅是讀取),則可以將每個變數設定為 "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
- 一個物件,指示您想要使用的其他語言功能
以下是一個 .eslintrc.json
檔案範例
{
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
}
},
"rules": {
"semi": "error"
}
}
設定剖析器選項有助於 ESLint 判斷什麼是剖析錯誤。所有語言選項預設為 false
。