Sublime Text 中配置 Eslint 代碼檢查和自動修復

前言

第一次運行 Vue 項目時被瀏覽器中滿屏的 ESLint 報錯給嚇到了,果斷禁用了該功能!

再之后找了個時間認真的了解了一下 ESLint,終于有了一些概念。簡單來說,ESLint 就是一個整合了編碼規范和檢測功能的工具。以前說的那些規范(html,css,js 等規范)都是讓你自己主動去學習,去遵守,現在 ESLint 幫助你檢測你的代碼是否符合你自己設定好的規范。

官網上的說明:

ESLint 最初是由 Nicholas C. Zakas 于2013年6月創建的開源項目。它的目標是提供一個插件化的 javascript 代碼檢測工具。

關于 ESLint 的入門學習大家可以查看這篇文章:利用ESLint檢查代碼質量,寫得挺易懂的~

ESLint 使用

使用 ESLint 的方式有很多種,參考該 頁面,有編輯器,構建工具,命令行,源代碼管理等。我個人目前的階段適合直接使用編輯器來實時檢測代碼并提示錯誤,如果使用 webpack 的話,需要保存修改后才會提示,還有其他種種不便(可能是因為我笨吧)。

ESLint 安裝和配置

一個項目中想要使用 ESLint,首先需要安裝 ESLint。全局安裝的話就不用每個項目獨立安裝了:

npm install eslint -g

如果你首次使用 ESLint,那么你需要先設置一個配置文件,你可以在項目根目錄下使用 --init 選項來生成:

eslint --init

But, 如果你真的是初次使用的話,肯定對 ESLint 的一切配置都一頭霧水,這里有一份某大牛使用的 ESLint 配置:.eslintrc.js,原項目的該文件將注釋刪去了,我給的是我之前將項目 fork 過來的文件地址,有注釋,如果看不懂注釋,就直接 中文官網 上查。

Ok,有了 全局的 ESLint當前項目根目錄下的規則配置文件,我們開始裝插件并測試功能吧!

代碼檢查

這個功能需要的插件為 Sublime?LinterSublimeLinter-contrib-eslint

Sublime?Linter 是一個代碼檢查框架插件,功能非常強大,支持各種語言的檢查。但是它本身并沒有代碼檢查的功能,需要借助 ESLint 這樣的特定語言檢查支持。我們只需要使用對應的 Sublime?Linter-contrib-eslint 插件即可。(參考文章:Sublime Text 3 配置 ESLint 代碼檢查

裝完這兩個插件后,就可以右鍵 SublimeLinter > Lint this view 檢查當前打開的 JS 文件了,不過我設置了(右鍵) SublimeLinter > Lint Mode > Background,讓插件在后臺自動執行代碼檢查功能,因此當前項目所有打開的 JS 文件都冒出了各種紅框框、紅點點……把光標置于錯誤處會在編輯器底部看到相應的錯誤信息。

那如何讓代碼檢查在 .vue 文件中也生效呢?在前面給出的 .eslintrc.js 中,有以下這段代碼:

// 使用非默認的 babel-eslint 作為代碼解析器
// 這樣 eslint 就能識別 babel 語法的代碼
parser: 'babel-eslint',
// required to lint *.vue files
// 用于檢查 *.vue 文件的代碼
plugins: [
    'html'
]

需要安裝插件才能使其檢查 .vue 文件的代碼,你需要全局安裝 eslint-plugin-html(就是上面代碼中的 'html' 插件) 和 babel-eslint(用于識別 babel 語法的代碼):

npm install eslint-plugin-html -g
npm install babel-eslint -g

babel-eslint
Why Use babel-eslint?
You only need to use babel-eslint if you are using types (Flow) or experimental features not supported in ESLint itself yet. Otherwise try the default parser (you don't have to use it just because you are using Babel).
乍一看上面的說明,也許我們并不需要 babel-eslint 插件的,但是我也不懂,所以就不管了~

到此暫告一段落,有了代碼的實時檢查功能,你可以隨時修改代碼并看到反饋,有些報錯代碼的寫法是你刻意為之的,不影響代碼運行,你也可以就放在那里不管它,反正又不影響項目的運行(如果集成到構建工具中使用,說不定就影響了哦~)。

自動修復

ESLint 命令行--fix 選項用來自動修復規則所報告的問題(目前,大部分是對空白的修復),規則名前面有扳手圖標的說明該問題可被自動修復。(具體請查看 Rules 頁面)

我測試使用了兩個 Sublime 插件:ESLintAutoFixESLint-Formatter

第一個插件 ESLintAutoFix 我用了之后,總是會報錯 [WinError 2] 系統找不到指定的文件,修改了配置項也沒反應,多次嘗試后我放棄了。

第二個插件 ESLint-Formatterjs 文件上使用是 ok 的,右鍵 ESLint Formatter > Format This File 或者直接使用快捷鍵 ctrl+shift+h。如果快捷鍵沖突了,可以在菜單欄找到 Preferences > Package Settings > ESLint Formatter > Key Binding - User,打開 Key Binding - User 文件,新增快捷鍵綁定,代碼如下:

{
    "keys": ["ctrl+alt+h"],
    "command": "format_eslint"
}

vue 文件自動修復

但是,如果在 .vue 文件上使用 ESLint-Formatter 插件,就會出現問題,頁面上會出現重復的 template 部分(反正我使用的話會有問題,都查不到解決方案……)。

由于我最近主要使用 Vue 進行開發,因此這個問題必須解決(當你發現頁面上的紅點點超過你的承受能力范圍的時候,是非常需要一鍵自動修復功能的~)!

考慮過使用 webpack 來修復的,就是文件保存修改后自動修復,但是官網上看到:


use webpack to fix code

我就打消念頭了~

經過我百般折騰和搜索,發現了這個 Fix the code using --fix,并得到了一個解決方案:
菜單欄找到 Tools > Build System > New Build System,新建一個 eslint-fix.sublime-build 文件,文件名隨便起都可以的,然后里面內容如下:

{
    "shell_cmd": "eslint --fix $file" 
}

或者

{
    "cmd": "D:\\dev\\nvm\\npm\\eslint.cmd --fix $file" 
}

(確保全局安裝 eslint)如果你想要修復的文件可以通過命令行工具運行命令 eslint --fix 成功自動修復的話,我這個方法就能成功。

使用方式為:選擇菜單欄 Tools > Build System > eslint-fix 或者 使用快捷鍵 ctrl+b 運行剛剛創建的 build 文件。(當然選擇快捷鍵方式~)運行成功會將信息顯示在面板(Panel)上,如下圖所示:

panel

如果你有過這種疑問:通過一個快捷鍵對編輯器當前打開文件執行一句命令,如何實現?答案就是,按照上面的例子就可以實現!

總結

在編輯器里實時檢查代碼可以給你最直接的代碼編寫反饋,看到哪里標紅了就會想說犯了什么錯誤,錯誤改正多了編碼習慣也就會慢慢變好了(同時也能避免你犯一些很傻逼的錯誤)~
反正代碼檢查工具還是很實用的,可以的話就從今天開始用起來吧!

參考資料

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

推薦閱讀更多精彩內容

  • ESLint 配置 ESlint 被設計為完全可配置的,這意味著你可以關閉每一個規則而只運行基本語法驗證,或混合和...
    靜默虛空閱讀 41,446評論 3 14
  • Sublime Text:一款具有代碼高亮、語法提示、自動完成且反應快速的編輯器軟件,不僅具有華麗的界面,還支持插...
    xiaotao123閱讀 9,509評論 0 27
  • Sublime Text:一款具有代碼高亮、語法提示、自動完成且反應快速的編輯器軟件,不僅具有華麗的界面,還支持插...
    追風逸少丶閱讀 11,341評論 1 34
  • 轉載 :OpenDiggawesome-github-vue 是由OpenDigg整理并維護的Vue相關開源項目庫...
    果汁密碼閱讀 23,161評論 8 124
  • EsLint入門學習整理 這兩天因為公司要求,就對ESLint進行了初步的了解,網上的內容基本上都差不多,但是內容...
    點柈閱讀 26,052評論 3 42