# 语言选项
# 指定环境
环境提供预定义的全局变量。可用的环境有:
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。worker
- 网络工作者全局变量。amd
- 根据amd
规范将require()
和define()
定义为全局变量。mocha
- 添加所有 Mocha 测试全局变量。jasmine
- 为版本 1.3 和 2.0 添加所有 Jasmine 测试全局变量。jest
- Jest 全局变量。phantomjs
- PhantomJS 全局变量。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 并且想要 React 语义,我们建议使用 eslint-plugin-react
。同样,支持 ES6 语法与支持新的 ES6 全局变量(例如,Set
等新类型)是不同的。对于 ES6 语法,使用 { "parserOptions": { "ecmaVersion": 6 } }
;对于新的 ES6 全局变量,使用 { "env": { "es6": true } }
。{ "env": { "es6": true } }
自动启用 ES6 语法,但 { "parserOptions": { "ecmaVersion": 6 } }
不会自动启用 ES6 全局。
使用 parserOptions
属性在 .eslintrc.*
文件中设置解析器选项。可用的选项有:
ecmaVersion
- 设置为 3、5(默认)、6、7、8、9、10、11、12、13 或 14 以指定要使用的 ECMAScript 语法版本。还可以设置为2015(同6)、2016(同7)、2017(同8)、2018(同9)、2019(同10)、2020(同11)、2021(同as 12)、2022(与 13 相同)或 2023(与 14 相同)使用基于年份的命名。您还可以将 "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
。