ESlint 默認解析 ES5 語法,經過配置 parser options,能夠覆蓋這個設置從而解析其餘 ES 版本 或者是 JSX 語法(注:支持 JSX 語法和支持 React 語法是兩個概念,使用 React 開發時推薦使用 eslint-plugin-react)。一樣,支持 ES6 語法和支持 ES6 中新增的數據類型好比 Set 等也略有不一樣,僅支持ES6語法可直接配置 {"parserOptions": {"ecmaVersion": 6}} ,若需支持新增的數據類型則配置爲 {"env": {"es6": true}}(自動支持ES6語法)。node
parserOptions 可選的配置項有:react
ecmaVersion : 可配置爲 3,5(默認),6(2015),7(2017),8(2018),9(2019),10(2019)es6
sourceType : 可配置爲 script 或 moduleweb
ecmaFeatures : 用來配置一些語言其餘特性的對象typescript
ESlint 默認使用Espree做爲解析器,也能夠指定知足如下條件的其餘解析器:express
經常使用的可選項有:Esprima,Babel-ESlint,@typescript-eslint/parsernpm
env 決定了當前環境下可以使用的全局變量,它的可選項有:json
這些環境並非互斥的,你能夠一次定義多個,好比:數組
{
"env": {
"browser": true,
"node": true
}
}
複製代碼
若是要使用一個插件中的環境,那要保證先將插件名定義的 plugins 數組中,好比:瀏覽器
{
"plugins": ["example"]
"env": {
"browser": true,
"node": true,
"example/custom": true
}
}
複製代碼
若是在一個JS文件中使用到了這個文件內沒有定義的全局變量,ESlint 會進行報錯。要去掉這個報錯,能夠選擇在文件內部的註釋配置全局變量或是經過配置文件修改。
/* global var1, var2 */
// 若要在當前文件修改var1值
/* global var1:writable, var2 */
複製代碼
{
"globals": {
"var1": "writable",
"var2": "readonly"
}
}
// 也能夠經過配置off去掉所有變量中某個變量的使用,好比在 es6 環境下去掉 Promise 的使用
{
"globals": {
"Promise": "off"
}
}
複製代碼
ESlint 提供了大量的規則,咱們一樣能夠經過使用註釋配置或配置文件來修改它們。要修改一個規則,就必須將將它的ID改成如下可選值:
經過配置文件修改:
// 此處注意 quotes 規則加入了附加選項,故用數組表示
/* eslint quotes: ["error", "double"], curly: 2 */
// 使用 eslint 插件中定義的規則
/* eslint "plugin1/rule1": "error" */
複製代碼
經過配置文件修改;
{
"rules": {
"eqeqeq": "off",
"curly": "error",
"quotes": ["error", "double"]
}
}
// 使用插件中的規則
{
"plugins": [
"plugin1"
],
"rules": {
"eqeqeq": "off",
"curly": "error",
"quotes": ["error", "double"],
"plugin1/rule1": "error"
}
}
複製代碼
若是要在代碼中暫時屏蔽掉某個規則,能夠在代碼中添加以下注釋:
// 屏蔽全部規則
/* eslint-disable */
alert('foo');
/* eslint-disable */
// 屏蔽特定規則
/* eslint-disable no-alert, no-console */
alert('foo');
console.log('bar');
/* eslint-disable no-alert, no-console */
// 只針對某一行作屏蔽(塊級註釋和行內註釋都可)
alert('foo'); // eslint-disable-line
/* eslint-disable-next-line */
alert('foo');
foo() // eslint-disable-line example/rule-name
複製代碼
經過配置 overrides 屬性能夠對一組文件屏蔽某些規則:
{
"rules": {...},
"overrides": [
{
"files": ["*-test.js","*.spec.js"],
"rules": {
"no-unused-expressions": "off"
}
}
]
}
複製代碼
本系列文章主要是將ESlint的配置文檔翻譯組織了一遍,以供本身查閱,源文檔 Configuring ESlint。