/*
- ESLint的JSON文件是允許JavaScript注釋的,但在gist里顯示效果不好,所以我把.json文件后綴改為了.js
*/
/*
- ESLint 配置文件優先級:
- .eslintrc.js(輸出一個配置對象)
- .eslintrc.yaml
- .eslintrc.yml
- .eslintrc.json(ESLint的JSON文件允許JavaScript風格的注釋)
- .eslintrc(可以是JSON也可以是YAML)
- package.json(在package.json里創建一個eslintConfig屬性,在那里定義你的配置)
*/
/*
- 你可以通過在項目根目錄創建一個.eslintignore文件告訴ESLint去忽略特定的文件和目錄
- .eslintignore文件是一個純文本文件,其中的每一行都是一個glob模式表明哪些路徑應該忽略檢測
*/
{
//ESLint默認使用Espree作為其解析器
//同時babel-eslint也是用得最多的解析器
"parser": "espree",
//parser解析代碼時的參數
"parserOption": {
//指定要使用的ECMAScript版本,默認值5
"ecmaVersion": 5,
//設置為script(默認)或module(如果你的代碼是ECMAScript模塊)
"sourceType": "script",
//這是個對象,表示你想使用的額外的語言特性,所有選項默認都是false
"ecmafeatures": {
//允許在全局作用域下使用return語句
"globalReturn": false,
//啟用全局strict模式(嚴格模式)
"impliedStrict": false,
//啟用JSX
"jsx": false,
//啟用對實驗性的objectRest/spreadProperties的支持
"experimentalObjectRestSpread": false
}
},
//指定環境,每個環境都有自己預定義的全局變量,可以同時指定多個環境,不矛盾
"env": {
//效果同配置項ecmaVersion一樣
"es6": true,
"browser": true,
"node": true,
"commonjs": false,
"mocha": true,
"jquery": true,
//如果你想使用來自某個插件的環境時,確保在plugins數組里指定插件名
//格式為:插件名/環境名稱(插件名不帶前綴)
"react/node": true
},
//指定環境為我們提供了預置的全局變量
//對于那些我們自定義的全局變量,可以用globals指定
//設置每個變量等于true允許變量被重寫,或false不允許被重寫
"globals": {
"globalVar1": true,
"globalVar2": false
},
//ESLint支持使用第三方插件
//在使用插件之前,你必須使用npm安裝它
//全局安裝的ESLint只能使用全局安裝的插件
//本地安裝的ESLint不僅可以使用本地安裝的插件還可以使用全局安裝的插件
//plugin與extend的區別:extend提供的是eslint現有規則的一系列預設
//而plugin則提供了除預設之外的自定義規則,當你在eslint的規則里找不到合適的的時候
//就可以借用插件來實現了
"plugins": [
"eslint-plugin-airbnb",
//插件名稱可以省略eslint-plugin-前綴
"react"
],
//具體規則配置
//off或0--關閉規則
//warn或1--開啟規則,警告級別(不會導致程序退出)
//error或2--開啟規則,錯誤級別(當被觸發的時候,程序會退出)
"rules": {
"eqeqeq": "warn",
//你也可以使用對應的數字定義規則嚴重程度
"curly": 2,
//如果某條規則有額外的選項,你可以使用數組字面量指定它們
//選項可以是字符串,也可以是對象
"quotes": ["error", "double"],
"one-var": ["error", {
"var": "always",
"let": "never",
"const": "never"
}],
//配置插件提供的自定義規則的時候,格式為:不帶前綴插件名/規則ID
"react/curly": "error"
},
//ESLint支持在配置文件添加共享設置
//你可以添加settings對象到配置文件,它將提供給每一個將被執行的規則
//如果你想添加的自定義規則而且使它們可以訪問到相同的信息,這將會很有用,并且很容易配置
"settings": {
"sharedData": "Hello"
},
//Eslint檢測配置文件步驟:
//1.在要檢測的文件同一目錄里尋找.eslintrc.*和package.json
//2.緊接著在父級目錄里尋找,一直到文件系統的根目錄
//3.如果在前兩步發現有root:true的配置,停止在父級目錄中尋找.eslintrc
//4.如果以上步驟都沒有找到,則回退到用戶主目錄~/.eslintrc中自定義的默認配置
"root": true,
//extends屬性值可以是一個字符串或字符串數組
//數組中每個配置項繼承它前面的配置
//可選的配置項如下
//1.字符串eslint:recommended,該配置項啟用一系列核心規則,這些規則報告一些常見問題,即在(規則頁面)中打勾的規則
//2.一個可以輸出配置對象的可共享配置包,如eslint-config-standard
//可共享配置包是一個導出配置對象的簡單的npm包,包名稱以eslint-config-開頭,使用前要安裝
//extends屬性值可以省略包名的前綴eslint-config-
//3.一個輸出配置規則的插件包,如eslint-plugin-react
//一些插件也可以輸出一個或多個命名的配置
//extends屬性值為,plugin:包名/配置名稱
//4.一個指向配置文件的相對路徑或絕對路徑
//5.字符串eslint:all,啟用當前安裝的ESLint中所有的核心規則
//該配置不推薦在產品中使用,因為它隨著ESLint版本進行更改。使用的話,請自己承擔風險
"extends": [
"eslint:recommended",
"standard",
"plugin:react/recommended",
"./node_modules/coding-standard/.eslintrc-es6",
"eslint:all"
]
}