eslint 常用校驗(yàn)規(guī)則

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"
                ]
            }
        ]
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容