配置语言选项(已弃用)
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
- 添加所有 Jasmine 测试全局变量(版本 1.3 和 2.0)。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 对 JSX 语法应用了 ESLint 不识别的特定语义。如果您使用的是 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
。