設定語言選項(已棄用)
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 */
這會定義兩個全域變數,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
。