使用 VSCode + ESLint 實(shí)踐前端編碼規(guī)范

在團(tuán)隊(duì)的項(xiàng)目開發(fā)過程中,代碼維護(hù)所占的時(shí)間比重往往大于新功能的開發(fā)。因此編寫符合團(tuán)隊(duì)編碼規(guī)范的代碼是至關(guān)重要的,這樣做不僅可以很大程度地避免基本語法錯(cuò)誤,也保證了代碼的可讀性,畢竟:

程序是寫給人讀的,只是偶爾讓計(jì)算機(jī)執(zhí)行一下。—— Donald Knuth

本文將講解如何在 VSCode 中配合 ESLint 擴(kuò)展來實(shí)踐團(tuán)隊(duì)內(nèi)部的前端編碼規(guī)范。

什么是 ESLint

ESLint中文站點(diǎn))是一個(gè)開源的 JavaScript 代碼檢查工具,使用 Node.js 編寫,由 Nicholas C. Zakas 于 2013 年 6 月創(chuàng)建。ESLint 的初衷是為了讓程序員可以創(chuàng)建自己的檢測(cè)規(guī)則,使其可以在編碼的過程中發(fā)現(xiàn)問題而不是在執(zhí)行的過程中。ESLint 的所有規(guī)則都被設(shè)計(jì)成可插入的,為了方便使用,ESLint 內(nèi)置了一些規(guī)則,在這基礎(chǔ)上也可以增加自定義規(guī)則。

安裝 ESLint 擴(kuò)展

安裝環(huán)境

安裝 ESLint 擴(kuò)展

首先,打開 VSCode 擴(kuò)展面板并搜索 ESLint 擴(kuò)展,然后點(diǎn)擊安裝

image

安裝完畢之后點(diǎn)擊重新加載以激活擴(kuò)展,但想要讓擴(kuò)展進(jìn)行工作,我們還需要先進(jìn)行 ESLint 的安裝配置。

安裝 ESLint

如果你僅僅想讓 ESLint 成為你項(xiàng)目構(gòu)建系統(tǒng)的一部分,我們可以在項(xiàng)目根目錄進(jìn)行本地安裝:

$ npm install eslint --save-dev

如果想使 ESLint 適用于你所有的項(xiàng)目,我們建議使用全局安裝,使用全局安裝 ESLint 后,你使用的任何 ESLint 插件或可分享的配置也都必須在全局安裝。

這里我們使用全局安裝:

$ npm install -g eslint

安裝完畢后,我們使用eslint --init命令在用戶目錄中生成一個(gè)配置文件(也可以在任何你喜歡的位置進(jìn)行生成)

image

我們?cè)诘谝粋€(gè)選項(xiàng)中選擇自定義代碼風(fēng)格,之后根據(jù)需要自行選擇。

設(shè)置完成后我們會(huì)得到一份文件名為.eslintrc.js的配置文件:

module.exports = {
    "env": {
        "browser": true,
        "commonjs": true,
        "es6": true
    },
    "extends": "eslint:recommended",
    "parserOptions": {
        "sourceType": "module"
    },
    "rules": {
        "indent": [
            "error",
            4
        ],
        "linebreak-style": [
            "error",
            "windows"
        ],
        "quotes": [
            "error",
            "single"
        ],
        "semi": [
            "error",
            "never"
        ]
    }
};

配置 ESLint

配置文件生成之后,我們接著可以進(jìn)行自定義修改,這里我們只粗略講解常用的配置項(xiàng),完整的可配置項(xiàng)可訪問官方文檔

配置環(huán)境

在上文生成的配置文件中可以使用env屬性來指定要啟用的環(huán)境,將其設(shè)置為true,以保證在進(jìn)行代碼檢測(cè)時(shí)不會(huì)把這些環(huán)境預(yù)定義的全局變量識(shí)別成未定義的變量而報(bào)錯(cuò):

"env": {
    "browser": true,
    "commonjs": true,
    "es6": true,
    "jquery": true
}

設(shè)置語言選項(xiàng)

默認(rèn)情況下,ESLint 支持 ECMAScript 5 語法,如果你想啟用對(duì) ECMAScript 其它版本和 JSX 等的支持,ESLint 允許你使用parserOptions屬性進(jìn)行指定想要支持的 JavaScript語言選項(xiàng),不過你可能需要自行安裝eslint-plugin-react等插件。

"parserOptions": {
    "ecmaVersion": 6,
    "sourceType": "module",
    "ecmaFeatures": {
        "jsx": true
    }
}

配置規(guī)則

在上文的配置文件中,"extends": "eslint:recommended"選項(xiàng)表示啟用推薦規(guī)則,在推薦規(guī)則的基礎(chǔ)上我們還可以根據(jù)需要使用rules新增自定義規(guī)則,每個(gè)規(guī)則的第一個(gè)值都是代表該規(guī)則檢測(cè)后顯示的錯(cuò)誤級(jí)別:

  • "off"0 - 關(guān)閉規(guī)則

  • "warn"1 - 將規(guī)則視為一個(gè)警告

  • "error"2 - 將規(guī)則視為一個(gè)錯(cuò)誤

"rules": {
    "indent": [
        "error",
        4
    ],
    "linebreak-style": [
        "error",
        "windows"
    ],
    "quotes": [
        "error",
        "single"
    ],
    "semi": [
        "error",
        "never"
    ]
}

完整的可配置規(guī)則列表可訪問:http://eslint.cn/docs/rules/其中帶標(biāo)記的表示該規(guī)則為推薦規(guī)則。

設(shè)置 ESLint 擴(kuò)展

安裝并配置完成 ESLint 后,我們繼續(xù)回到 VSCode 進(jìn)行擴(kuò)展設(shè)置,依次點(diǎn)擊文件 > 首選項(xiàng) > 設(shè)置打開 VSCode 配置文件

image
image

從左側(cè)系統(tǒng)設(shè)置中可以看到,ESLint 擴(kuò)展默認(rèn)已經(jīng)啟用,我們現(xiàn)在只需在右側(cè)用戶設(shè)置中添加配置來指定我們創(chuàng)建的.eslintrc.js配置文件路徑即可啟用自定義規(guī)則檢測(cè),ESLint 會(huì)查找并自動(dòng)讀取它們:

"eslint.options": {
    "configFile": "E:/git/github/styleguide/eslint/.eslintrc.js"
},

至此,我們已經(jīng)可以使用 ESLint 擴(kuò)展來檢測(cè)我們的 js 文件了。

讓 ESLint 支持 Vue 單文件組件

由于 ESLint 默認(rèn)只支持 js 文件的腳本檢測(cè),如果我們需要支持類html文件(如vue)的內(nèi)聯(lián)腳本檢測(cè),還需要安裝eslint-plugin-html插件。因?yàn)槲覀兪褂萌职惭b了 ESLint,所以eslint-plugin-html插件也必須進(jìn)行全局安裝:

$ npm install -g eslint-plugin-html

安裝完成后,我們?cè)俅未蜷_文件 > 首選項(xiàng) > 設(shè)置,在右側(cè)用戶設(shè)置中修改 ESLint 的相關(guān)配置并保存:

"eslint.options": {
    "configFile": "E:/git/github/styleguide/eslint/.eslintrc.js",
    "plugins": ["html"]
},
"eslint.validate": [
    "javascript",
    "javascriptreact",
    "html",
    "vue"
]
image

最后,我們打開一個(gè)vue文件,可以發(fā)現(xiàn) ESLint 擴(kuò)展已經(jīng)正常工作了,嗯,enjoy yourself (●ˇ?ˇ●)

文章轉(zhuǎn)自:使用 VSCode + ESLint 實(shí)踐前端編碼規(guī)范 ?--hardylin

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,362評(píng)論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,577評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,486評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,852評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,600評(píng)論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,944評(píng)論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,944評(píng)論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,108評(píng)論 0 290
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,652評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,385評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,616評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,111評(píng)論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,798評(píng)論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,205評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,537評(píng)論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,334評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,570評(píng)論 2 379

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

  • ESLint 配置 ESlint 被設(shè)計(jì)為完全可配置的,這意味著你可以關(guān)閉每一個(gè)規(guī)則而只運(yùn)行基本語法驗(yàn)證,或混合和...
    靜默虛空閱讀 41,450評(píng)論 3 14
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,828評(píng)論 18 139
  • EsLint入門學(xué)習(xí)整理 這兩天因?yàn)楣疽螅蛯?duì)ESLint進(jìn)行了初步的了解,網(wǎng)上的內(nèi)容基本上都差不多,但是內(nèi)容...
    點(diǎn)柈閱讀 26,055評(píng)論 3 42
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,922評(píng)論 6 342
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,752評(píng)論 25 708