解析器:
ESLint默认使用Espree作为其解析器
你可以指定解析器,但是要符合下列要求:
- 它必须是一个 Node 模块,可以从它出现的配置文件中加载。
通常,这意味着应该使用 npm 单独安装解析器包 - 它必须符合 parser interface
即使满足这些兼容性要求,也不能保证一个外部解析器可以与 ESLint
正常配合工作,ESLint 也不会修复与其它解析器不兼容的相关 bug
在.eslintrc 文件里指定 parser 选项表明使用该npm模块作为解析器之一
例如,下面的配置指定了 Esprima 作为解析器:
{
"parser": "esprima",
"rules": {
"semi": "error"
}
}
以下解析器与 ESLint 兼容:
1、Esprima
2、Babel-ESLint
一个对Babel解析器的包装,使其能够与 ESLint 兼容。
3、@typescript-eslint/parser
将 TypeScript 转换成与 estree 兼容的形式,以便在ESLint中使用。
注意:
在使用自定义解析器时,
为了让 ESLint 在处理非 ECMAScript 5 特性时正常工作,
配置属性 parserOptions 仍然是必须的
解析器会被传入parserOptions,
但是不一定会使用它们来决定功能特性的开关。
parserOptions参数
"parser":"esprima",
"parserOptions": {
"ecmaVersion": 6 ,
//emcaVersion用来指定你想要使用的 ECMAScript 版本
"sourceType": "module",
// 设置为 "script" (默认)或"module"(如果你的代码是 ECMAScript 模块)
"ecmaFeature":{ //想使用额外的语言特性
"jsx":true, //启用jsx
"globalReturn":true, //在全局作用域下使用return语句
"impliedStrict":true, //启用全局strict mode
"experimentalObjectRestSpread":false
//启用实验性的object rest/spread properties支持
//(不建议开启)
}
1、“ecmaVersion”: 6 ,
emcaVersion用来指定你想要使用的 ECMAScript 版本
2、“sourceType”: “module”,
设置为 “script” (默认)或"module"(如果代码是 ECMAScript 模块)
3、“ecmaFeature”:
想使用额外的语言特性
- “jsx”:true, //启用jsx
- “globalReturn”:true, //在全局作用域下使用return语句
- “impliedStrict”:true, //启用全局strict mode
- “experimentalObjectRestSpread”:false
//启用实验性的object rest/spread properties支持
//(不建议开启)
注意:
//对于 ES6 语法,使用
{
"parserOptions": {
"ecmaVersion": 6
}
}
//对于新的 ES6 全局变量,使用
{
"env":{
"es6": true
}
}.
{
"env": { "es6": true }
}
自动启用es6语法和全局变量,但
{
"parserOptions":
{
"ecmaVersion": 6
}
}
不自动启用es6全局变量
插件:
插件是一个npm 包,通常输出规则,可以提供处理器
ESLint 支持使用第三方插件
在使用插件之前,你必须使用 npm 安装它
在配置文件.eslint.*里配置插件时可以使用plugins关键字来存放插件名字的列表
插件名称可以省略 eslint-plugin- 前缀
{
"plugins": [
"react"
],
"overrides": [ // overrides 键和 processor 键特定类型的文件指定处理器
{
"files": ["*.vue"], //文件名
"processor": ""
//插件名和处理器名组成的串接字符串加上斜杠 plugins+'/'+processor
"rules": { //指定规则
"strict": "off" //在该插件下检查时关闭严格模式
}
}
]
}
在rules配置中定义插件的约束
配置定义在插件中的一个规则的时候,你必须使用 插件名/规则ID 的形式
"rules":{
"react/no-console":"warn"
}