Eslint附帶了大量的校驗(yàn)規(guī)則,這些規(guī)則的值分別有如下規(guī)律:
-
off| 0 :表示關(guān)閉規(guī)則。 -
warn| 1 :表示將該規(guī)則轉(zhuǎn)換為警告。 -
error| 2 :表示將該規(guī)則轉(zhuǎn)換為錯(cuò)誤。
具體的規(guī)則請(qǐng)查看:https://eslint.org/docs/rules/
如果同一個(gè)目錄下有多個(gè)配置文件,ESLint 只會(huì)使用一個(gè)。優(yōu)先級(jí)順序如下:
.eslintrc.js
.eslintrc.yaml
.eslintrc.yml
.eslintrc.json
.eslintrc (棄用)
package.json
"rules": {
//在定義對(duì)象的時(shí)候,getter/setter需要同時(shí)出現(xiàn)
"accessor-pairs": 2,
// 箭頭函數(shù)中,在需要的時(shí)候,在參數(shù)外使用小括號(hào)(只有一個(gè)參數(shù)時(shí),可以不適用括號(hào),其它情況下都需要使用括號(hào))
"arrow-parens": [
2,
"as-needed"
],
//箭頭函數(shù)中的箭頭前后需要留空格
"arrow-spacing": [
2,
{
"before": true,
"after": true
}
],
//該條規(guī)則主要用于定義數(shù)組字面量定義數(shù)組時(shí),前后是否加空格,接受兩個(gè)可選配置,always 和never .
//如果設(shè)置為always 那么就應(yīng)該在在寫數(shù)組是前后都留空格
"array-bracket-spacing": [
2,
"never"
],
//如果代碼塊是單行的時(shí)候,代碼塊內(nèi)部前后需要留一個(gè)空格
"block-spacing": [
2,
"always"
],
//大括號(hào)語(yǔ)法采用『1tbs』,允許單行樣式
"brace-style": [
2,
"1tbs",
{
"allowSingleLine": true
}
],
/**
*該規(guī)則會(huì)搜索代碼中所有的下劃線,它會(huì)忽略變量名開始和結(jié)尾的下劃線而只檢測(cè)變量中間的下劃線。
*如果ESLint認(rèn)為一個(gè)變量是常量(所有字母大寫),那么在變量名字母之間添加下劃線也是可以而不會(huì)報(bào)錯(cuò)的。
*該規(guī)則只檢測(cè)生命和定義時(shí)的變量而不檢測(cè)函數(shù)調(diào)用時(shí)的函數(shù)名。
**/
"camelcase": [
2,
{
"properties": "never"
}
],
//在定義對(duì)象或數(shù)組時(shí),最后一項(xiàng)不能加逗號(hào)
"comma-dangle": [
2,
"never"
],
//在寫逗號(hào)時(shí),逗號(hào)前面不需要加空格,而逗號(hào)后面需要添加空格
"comma-spacing": [
2,
{
"before": false,
"after": true
}
],
//如果逗號(hào)可以放在行首或行尾時(shí),那么請(qǐng)放在行尾
"comma-style": [
2,
"last"
],
//在constructor函數(shù)中,如果classes是繼承其他class,那么請(qǐng)使用super。否者不使用super
"constructor-super": 2,
//在if-else語(yǔ)句中,如果if或else語(yǔ)句后面是多行,那么必須加大括號(hào)。如果是單行就應(yīng)該省略大括號(hào)。
"curly": [
2,
"multi-line"
],
//該規(guī)則規(guī)定了.應(yīng)該放置的位置,
"dot-location": [
2,
"property"
],
//使用=== !== 代替== != .
"eqeqeq": [
2,
"allow-null"
],
//該規(guī)則規(guī)定了generator函數(shù)中星號(hào)兩邊的空白。
"generator-star-spacing": [
2,
{
"before": true,
"after": true
}
],
// 規(guī)定callback 如果有err參數(shù),只能寫出err 或者 error .
"handle-callback-err": [
2,
"^(err|error)$"
],
//這個(gè)就是關(guān)于用什么來縮進(jìn)了,4個(gè)空格=兩個(gè)tab .
"indent": [
1,
2
],
// keyword 前后需要空格
"keyword-spacing": [
2,
{
"before": true,
"after": true,
"overrides": {}
}
],
//該規(guī)則規(guī)定了在對(duì)象字面量語(yǔ)法中,key和value之間的空白,冒號(hào)前不要空格,冒號(hào)后面需要一個(gè)空格
"key-spacing": [
2,
{
"beforeColon": false,
"afterColon": true
}
],
//構(gòu)造函數(shù)首字母大寫
"new-cap": [
2,
{
"newIsCap": true,
"capIsNew": false
}
],
//在使用構(gòu)造函數(shù)時(shí)候,函數(shù)調(diào)用的圓括號(hào)不能夠省略
"new-parens": 2,
//禁止使用Array構(gòu)造函數(shù)
"no-array-constructor": 2,
//禁止使用arguments.caller和arguments.callee
"no-caller": 2,
//禁止覆蓋class命名,也就是說變量名不要和class名重名
"no-class-assign": 2,
//禁止在case/default語(yǔ)句中使用lexical declarations,例如let, const, function and class .因?yàn)樵赾ase/default中的聲明,
//在整個(gè)switch語(yǔ)句中都能夠訪問到,如果實(shí)在需要聲明變量,可以加大括號(hào)。
"no-case-declarations": 2,
//在條件語(yǔ)句中不要使用賦值語(yǔ)句
"no-cond-assign": 2,
//const申明的變量禁止修改
"no-const-assign": 2,
//在正則表達(dá)式中禁止使用控制符(詳見官網(wǎng))
"no-control-regex": 2,
//禁止使用debugger語(yǔ)句
"no-debugger": 2,
//禁止使用delete刪除var申明的變量
"no-delete-var": 2,
//函數(shù)參數(shù)禁止重名
"no-dupe-args": 2,
//class中的成員禁止重名
"no-dupe-class-members": 2,
//在對(duì)象字面量中,禁止使用重復(fù)的key
"no-dupe-keys": 2,
//在switch語(yǔ)句中禁止重復(fù)的case
"no-duplicate-case": 2,
//禁止使用不匹配任何字符串的正則表達(dá)式
"no-empty-character-class": 2,
//禁止使用eval函數(shù)
"no-eval": 2,
//禁止對(duì)catch語(yǔ)句中的參數(shù)進(jìn)行賦值
"no-ex-assign": 2,
//禁止擴(kuò)展原生對(duì)象
"no-extend-native": 2,
//禁止在不必要的時(shí)候使用bind函數(shù)
"no-extra-bind": 2,
//在一個(gè)本來就會(huì)自動(dòng)轉(zhuǎn)化為布爾值的上下文中就沒必要再使用!! 進(jìn)行強(qiáng)制轉(zhuǎn)化了。
"no-extra-boolean-cast": 2,
//禁止使用多余的圓括號(hào)
"no-extra-parens": [
2,
"functions"
],
//這條規(guī)則,簡(jiǎn)單來說就是在case語(yǔ)句中盡量加break,避免不必要的fallthrough錯(cuò)誤,如果需要fall through,那么看官網(wǎng)。
"no-fallthrough": 2,
//簡(jiǎn)單來說不要寫這樣的數(shù)字.2 2.。應(yīng)該寫全,2.2 2.0 .
"no-floating-decimal": 2,
//禁止對(duì)函數(shù)名重新賦值
"no-func-assign": 2,
//禁止使用類eval的函數(shù)。
"no-implied-eval": 2,
//消除簡(jiǎn)寫的類型轉(zhuǎn)換,而推薦使用一種更加「自解釋」的轉(zhuǎn)換方法
"no-implicit-coercion": 2,
//禁止在代碼塊中定義函數(shù)(下面的規(guī)則僅限制函數(shù))
"no-inner-declarations": [
2,
"functions"
],
//RegExp構(gòu)造函數(shù)中禁止使用非法正則語(yǔ)句
"no-invalid-regexp": 2,
//在嚴(yán)格模式下,在classes或者classes-like對(duì)象外部使用this關(guān)鍵詞this將被視為undefined 并且拋出TypeError錯(cuò)誤。
"no-invalid-this": 2,
//禁止使用不規(guī)則的空白符
"no-irregular-whitespace": 2,
//禁止使用__iterator__屬性
"no-iterator": 2,
//label和var申明的變量不能重名
"no-label-var": 2,
//禁止使用label語(yǔ)句
"no-labels": [
2,
{
"allowLoop": false,
"allowSwitch": false
}
],
//禁止使用沒有必要的嵌套代碼塊
"no-lone-blocks": 2,
//不要把空格和tab混用
"no-mixed-spaces-and-tabs": 2,
//顧名思義,該規(guī)則保證了在邏輯表達(dá)式、條件表達(dá)式、
//申明語(yǔ)句、數(shù)組元素、對(duì)象屬性、sequences、函數(shù)參數(shù)中不使用超過一個(gè)的空白符。
"no-multi-spaces": 2,
//該規(guī)則保證了字符串不分兩行書寫。
"no-multi-str": 2,
//空行不能夠超過2行
"no-multiple-empty-lines": [
2,
{
"max": 2
}
],
//該規(guī)則保證了不重寫原生對(duì)象。
"no-native-reassign": 2,
//在in操作符左邊的操作項(xiàng)不能用! 例如這樣寫不對(duì)的:if ( !a in b) { //dosomething }
"no-negated-in-lhs": 2,
//當(dāng)我們使用new操作符去調(diào)用構(gòu)造函數(shù)時(shí),需要把調(diào)用結(jié)果賦值給一個(gè)變量。
"no-new": 2,
//該規(guī)則保證了不使用new Function(); 語(yǔ)句。
"no-new-func": 2,
//不要通過new Object(),來定義對(duì)象
"no-new-object": 2,
//禁止把require方法和new操作符一起使用。
"no-new-require": 2,
//當(dāng)定義字符串、數(shù)字、布爾值就不要使用構(gòu)造函數(shù)了,String、Number、Boolean
"no-new-wrappers": 2,
//禁止無意得把全局對(duì)象當(dāng)函數(shù)調(diào)用了,比如下面寫法錯(cuò)誤的:Math(), JSON()
"no-obj-calls": 2,
//不要使用八進(jìn)制的語(yǔ)法。
"no-octal": 2,
//用的少,見官網(wǎng)。http://eslint.org/docs/rules/
"no-octal-escape": 2,
//不要使用__proto__
"no-proto": 2,
//不要重復(fù)申明一個(gè)變量
"no-redeclare": 2,
//正則表達(dá)式中不要使用空格
"no-regex-spaces": 2,
//return語(yǔ)句中不要寫賦值語(yǔ)句
"no-return-assign": 2,
//不要和自身作比較
"no-self-compare": 2,
//不要使用逗號(hào)操作符,詳見官網(wǎng)
"no-sequences": 2,
//禁止對(duì)一些關(guān)鍵字或者保留字進(jìn)行賦值操作,比如NaN、Infinity、undefined、eval、arguments等。
"no-shadow-restricted-names": 2,
//函數(shù)調(diào)用時(shí),圓括號(hào)前面不能有空格
"no-spaced-func": 2,
//禁止使用稀疏數(shù)組
"no-sparse-arrays": 2,
//在調(diào)用super之前不能使用this對(duì)象
"no-this-before-super": 2,
//嚴(yán)格限制了拋出錯(cuò)誤的類型,簡(jiǎn)單來說只能夠拋出Error生成的錯(cuò)誤。但是這條規(guī)則并不能夠保證你只能夠
//拋出Error錯(cuò)誤。詳細(xì)見官網(wǎng)
"no-throw-literal": 2,
//行末禁止加空格
"no-trailing-spaces": 2,
//禁止使用沒有定義的變量,除非在/*global*/已經(jīng)申明
"no-undef": 2,
//禁止把undefined賦值給一個(gè)變量
"no-undef-init": 2,
//禁止在不需要分行的時(shí)候使用了分行
"no-unexpected-multiline": 2,
//禁止使用沒有必要的三元操作符,因?yàn)橛眯┤僮鞣梢允褂闷渌Z(yǔ)句替換
"no-unneeded-ternary": [
2,
{
"defaultAssignment": false
}
],
//沒有執(zhí)行不到的代碼
"no-unreachable": 2,
//沒有定義了沒有被使用到的變量
"no-unused-vars": [
0,
{
"vars": "all",
"args": "none"
}
],
//禁止在不需要使用call()或者apply()的時(shí)候使用了這兩個(gè)方法
"no-useless-call": 2,
//不要使用with語(yǔ)句
"no-with": 2,
//在某些場(chǎng)景只能使用一個(gè)var來申明變量
"one-var": [
2,
{
"initialized": "never"
}
],
//在進(jìn)行斷行時(shí),操作符應(yīng)該放在行首還是行尾。并且還可以對(duì)某些操作符進(jìn)行重寫。
"operator-linebreak": [
2,
"after",
{
"overrides": {
"?": "before",
":": "before"
}
}
],
//使用單引號(hào)
"quotes": [
1,
"single",
"avoid-escape"
],
//在使用parseInt() 方法時(shí),需要傳遞第二個(gè)參數(shù),來幫助解析,告訴方法解析成多少進(jìn)制。
"radix": 2,
//這就是分號(hào)黨和非分號(hào)黨關(guān)心的了,我們還是選擇加分號(hào)
"semi": [
2,
"always"
],
//該規(guī)則規(guī)定了分號(hào)前后的空格,具體規(guī)定如下。
"semi-spacing": [
2,
{
"before": false,
"after": true
}
],
//代碼塊前面需要加空格
"space-before-blocks": [
2,
"always"
],
//函數(shù)圓括號(hào)前面需要加空格
"space-before-function-paren": [
2,
"never"
],
//圓括號(hào)內(nèi)部不需要加空格
"space-in-parens": [
2,
"never"
],
//操作符前后需要加空格
"space-infix-ops": 2,
//一元操作符前后是否需要加空格,單詞類操作符需要加,而非單詞類操作符不用加
"space-unary-ops": [
2,
{
"words": true,
"nonwords": false
}
],
//評(píng)論符號(hào)`/*` `//`,后面需要留一個(gè)空格
"spaced-comment": [
2,
"always",
{
"markers": [
"global",
"globals",
"eslint",
"eslint-disable",
"*package",
"!",
","
]
}
],
//推薦使用isNaN方法,而不要直接和NaN作比較
"use-isnan": 2,
//在使用typeof操作符時(shí),作比較的字符串必須是合法字符串eg:'string' 'object'
"valid-typeof": 2,
//立即執(zhí)行函數(shù)需要用圓括號(hào)包圍
"wrap-iife": [
2,
"any"
],
//yoda條件語(yǔ)句就是字面量應(yīng)該寫在比較操作符的左邊,而變量應(yīng)該寫在比較操作符的右邊。
//而下面的規(guī)則要求,變量寫在前面,字面量寫在右邊
"yoda": [
2,
"never"
],
"require-yield": 0,
//react組件文件使用.jsx
"react/require-extension": [
1,
{
"extensions": [
".jsx"
]
}
]
}