ESLint使用手冊(cè)

ESLint 配置

中文官網(wǎng)

簡(jiǎn)介

  • ESLint 是在 ECMAScript/JavaScript 代碼中識(shí)別和報(bào)告模式匹配的工具屿讽,它的目標(biāo)是保證代碼的一致性和避免錯(cuò)誤碑宴。在許多方面紊浩,它和 JSLint何吝、JSHint 相似忆某。

安裝

  • 前提:node環(huán)境已經(jīng)配置好宏怔,最好已經(jīng)切換到國(guó)內(nèi)淘寶鏡像奏路。在node命令行窗口內(nèi)執(zhí)行安裝命令

    /* 全局安裝 */
    npm install -g eslint
    
    /* 依賴(lài)安裝 */
    npm install --save-dev eslint
    

    note: ESLint 支持幾種格式的配置文件,如果同一個(gè)目錄下有多個(gè)配置文件臊诊,ESLint 只會(huì)使用一個(gè)鸽粉。優(yōu)先級(jí)順序如下:

    • JavaScript - 使用 .eslintrc.js 然后輸出一個(gè)配置對(duì)象。

    • YAML - 使用 .eslintrc.yaml 或 .eslintrc.yml 去定義配置的結(jié)構(gòu)抓艳。

    • JSON -使用 .eslintrc.json 去定義配置的結(jié)構(gòu)触机,ESLint 的 JSON 文件允許 JavaScript 風(fēng)格的注釋。

    • Deprecated -使用 .eslintrc玷或,可以使 JSON 也可以是 YAML儡首。

    • package.json - 在 package.json 里創(chuàng)建一個(gè) eslintConfig屬性,在那里定義你的配置偏友。

  • 以及相關(guān)插件

    npm install -g eslint-plugin-standard
    npm install -g eslint-config-standard
    npm install -g eslint-plugin-promise
    npm install -g eslint-config-standard
    

初始化

  • 如果項(xiàng)目還沒(méi)有配置文件 .eslintrc 的話蔬胯,可以通過(guò)指定 --init 參數(shù)生成新的配置文件。運(yùn)行后會(huì)在當(dāng)前目錄下生成一個(gè) .eslintrc 文件位他,所有的檢查規(guī)則即在該文件中進(jìn)行配置氛濒。

    eslint --init
    

配置

  • 基本配置如下(.eslintrc.js)

    // http://eslint.org/docs/user-guide/configuring
    module.exports = {
        root: true,
        parser: 'babel-eslint',
        parserOptions: {
            sourceType: 'module'
        },
        env: {
            browser: true,
        },
        // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style
        extends: 'standard',
        // required to lint *.vue files
        plugins: [
            'html'
        ],
        // add your custom rules here
        'rules': {
            // allow paren-less arrow functions
            'arrow-parens': 0,
            // allow async-await
            'generator-star-spacing': 0,
            // allow debugger during development
            'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0
        }
    }
    

    note:

    • 解析器(parser):使用了babel-eslint,這個(gè)可以在package.json中找到鹅髓,說(shuō)明我們已經(jīng)安裝過(guò)該解析器了舞竿。

    • 環(huán)境配置(env):在瀏覽器中使用eslint。

    • 繼承(extends):該配置文件繼承了standard規(guī)則窿冯,具體規(guī)則自己看文檔骗奖。

    • 規(guī)則(rules):具體校驗(yàn)規(guī)則

    此外,在rules中每個(gè)配置項(xiàng)后面第一個(gè)值是eslint規(guī)則的錯(cuò)誤等級(jí),第二個(gè)值是處理方式:

    • “off” 或 0 - 關(guān)閉這條規(guī)則

    • “warn” 或 1 - 違反規(guī)則會(huì)警告(不會(huì)影響項(xiàng)目運(yùn)行)

    • “error” 或 2 - 違反規(guī)則會(huì)報(bào)錯(cuò)(屏幕上一堆錯(cuò)誤代碼~)

有些規(guī)則還帶有可選的參數(shù)重归,比如:

comma-dangle 可以寫(xiě)成

[ "error", "always-multiline" ]

no-multi-spaces可以寫(xiě)成

["error", {
    exceptions: {
        "ImportDeclaration": true
    }
}]

使用

  • 在node命令行窗口內(nèi)進(jìn)入到要檢測(cè)的js文件所在目錄米愿,執(zhí)行以下命令

    eslint xxx.js
    
  • 如果檢測(cè)到j(luò)s文件有不符合規(guī)則之處,可以自動(dòng)修復(fù)

    eslint xxx.js --fix
    

例外情況

  • ESLint提供了多種臨時(shí)禁用規(guī)則的方式鼻吮,比如我們可以通過(guò)一條eslint-disable-next-line備注來(lái)使得下一行可以跳過(guò)檢查:

    // eslint-disable-next-line
    var a = 123;
    var b = 456;
    

    在上面的示例代碼中育苟,var a = 123 不會(huì)受到檢查,而 var b = 456 則又恢復(fù)檢查椎木。

    我們還可以通過(guò)成對(duì)的 eslint-enableeslint-disable 備注來(lái)禁用對(duì)某一段代碼的檢查违柏,但是稍不小心少寫(xiě)了一個(gè)eslint-disable就可能會(huì)導(dǎo)致后面所有文件的檢查都被禁用,所以并不推薦使用香椎。

使用共享的配置文件

  • 為了更好的統(tǒng)一管理不同的項(xiàng)目漱竖,我們需要一個(gè)公共的規(guī)則

    • step1: 我們可以將定義好規(guī)則的.eslintrc.js文件存儲(chǔ)到一個(gè)公共的位置,比如public-eslintrc.js:

      module.exports = {
          extends: 'eslint:recommended',
          env: {
              node: true,
          },
          rules: {
              'no-console': 'off',
              'indent': ['error', 2],
              'quotes': ['error', 'single'],
          },
      };
      
    • step2:將原來(lái)的.eslintrc.js文件改成這樣:

      module.exports = {
          extends: './public-eslintrc.js',
      };
      

sublime ESLint插件

sublime集成ESlint需要安裝兩個(gè)插件 SublimeLinter畜伐、SublimeLinter-contrib-eslint 才能正常使用馍惹。

修改SublimeLinter的用戶(hù)配置文件:

{
    "user": {
        "debug": false,
        "delay": 0.25,
        "error_color": "D02000",
        //SublimeLinter與插件文件夾名保持一致
        "gutter_theme": "Packages/SublimeLinter/gutter-themes/Default/Default.gutter-theme",
        "gutter_theme_excludes": [],
        "lint_mode": "background",
        "linters": {
            //新增的
            "eslint": {
                "@disable": false,
                "args": [],
                "excludes": []
            }
        },
        "mark_style": "outline",
        "no_column_highlights_line": false,
        "passive_warnings": false,
        "paths": {
            "linux": [],
            "osx": [],
            "windows": [
                //全局安裝ESLint生成的eslint.cmd的目錄,根據(jù)自身情況修改
                "**/nodejs/eslint.cmd"
            ]
        },
        "python_paths": {
            "linux": [],
            "osx": [],
            "windows": []
        },
        "rc_search_limit": 3,
        "shell_timeout": 10,
        "show_errors_on_save": false,
        "show_marks_in_minimap": true,
        "syntax_map": {
            "html (django)": "html",
            "html (rails)": "html",
            "html 5": "html",
            "javascript (babel)": "javascript",
            "magicpython": "python",
            "php": "html",
            "python django": "python"
        },
        "warning_color": "DDB700",
        "wrap_find": true
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末玛界,一起剝皮案震驚了整個(gè)濱河市万矾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌慎框,老刑警劉巖良狈,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異笨枯,居然都是意外死亡薪丁,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)馅精,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)严嗜,“玉大人,你說(shuō)我怎么就攤上這事硫嘶∽栉剩” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵沦疾,是天一觀的道長(zhǎng)称近。 經(jīng)常有香客問(wèn)我,道長(zhǎng)哮塞,這世上最難降的妖魔是什么刨秆? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮忆畅,結(jié)果婚禮上衡未,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好缓醋,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布如失。 她就那樣靜靜地躺著,像睡著了一般送粱。 火紅的嫁衣襯著肌膚如雪褪贵。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天抗俄,我揣著相機(jī)與錄音脆丁,去河邊找鬼。 笑死动雹,一個(gè)胖子當(dāng)著我的面吹牛槽卫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播胰蝠,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼歼培,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了茸塞?” 一聲冷哼從身側(cè)響起丐怯,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎翔横,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體梗搅,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡禾唁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了无切。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荡短。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖哆键,靈堂內(nèi)的尸體忽然破棺而出掘托,到底是詐尸還是另有隱情,我是刑警寧澤籍嘹,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布闪盔,位于F島的核電站,受9級(jí)特大地震影響辱士,放射性物質(zhì)發(fā)生泄漏泪掀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一颂碘、第九天 我趴在偏房一處隱蔽的房頂上張望异赫。 院中可真熱鬧,春花似錦、人聲如沸塔拳。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)靠抑。三九已至量九,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間孕荠,已是汗流浹背娩鹉。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留稚伍,地道東北人弯予。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像个曙,于是被迫代替她去往敵國(guó)和親锈嫩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • ESLint 配置 ESlint 被設(shè)計(jì)為完全可配置的垦搬,這意味著你可以關(guān)閉每一個(gè)規(guī)則而只運(yùn)行基本語(yǔ)法驗(yàn)證呼寸,或混合和...
    靜默虛空閱讀 41,245評(píng)論 3 14
  • EsLint入門(mén)學(xué)習(xí)整理 這兩天因?yàn)楣疽螅蛯?duì)ESLint進(jìn)行了初步的了解猴贰,網(wǎng)上的內(nèi)容基本上都差不多对雪,但是內(nèi)容...
    點(diǎn)柈閱讀 26,009評(píng)論 3 42
  • 兩個(gè)月之前在項(xiàng)目中就開(kāi)始使用 Eslint ,當(dāng)時(shí)直接 copy 別人的 .eslintrc.js 文件米绕,感覺(jué)好復(fù)...
    dkvirus閱讀 111,884評(píng)論 33 190
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理瑟捣,服務(wù)發(fā)現(xiàn),斷路器栅干,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • 前言 webpack2和vue2已經(jīng)不是新鮮東西了迈套,滿(mǎn)大街的文章在講解webpack和vue,但是很多內(nèi)容寫(xiě)的不是...
    技術(shù)宅小青年閱讀 6,517評(píng)論 4 43