你也許不知道的Vuejs - 使用ESLint檢查代碼質(zhì)量

you-may-not-know-vuejs.png

by yugasun from https://yugasun.com/post/you-may-not-know-vuejs-8.html
本文可全文轉(zhuǎn)載,但需要保留原作者和出處。

前言

Javascript 是一門弱類型語言,所以語法檢查變得尤為重要。雖然有很多前端IDE開發(fā)工具,可以很好地幫助我們提示在編寫時(shí)的錯(cuò)誤,但是大多數(shù)開發(fā)者還是使用的像 Sublime Text、Visual Studio Code 之類的輕量級(jí)編輯器,這導(dǎo)致在開發(fā)中很容易出現(xiàn)各種錯(cuò)誤,比如單詞拼寫錯(cuò)誤,漏掉了括號(hào)等。而且每個(gè)人的代碼編寫習(xí)慣也不一樣,因此有的項(xiàng)目的代碼格式千差萬別,比如 縮進(jìn)空格數(shù),有的習(xí)慣4個(gè),有的習(xí)慣2個(gè),這也導(dǎo)致項(xiàng)目維護(hù)起來越來越麻煩,遇到錯(cuò)誤也很難定位。因此對(duì) Javascript 進(jìn)行語法檢查的工具應(yīng)運(yùn)而生,目前 ESLint 使用最為廣泛。這篇將講解如何將 ESLint 集成到我們的項(xiàng)目中。

配置方式

ESLint 具有高可配置行,這就意味著你可以根據(jù)項(xiàng)目需求定制代碼檢查規(guī)則。ESLint 的配置方式可以有以下兩種方式:

  • 文件注釋:在 Javascript 文件中使用注釋包裹配置內(nèi)容。
  • 配置文件(推薦):在項(xiàng)目根目錄下創(chuàng)建包含檢查規(guī)則的 .eslintrc.* 文件。

擴(kuò)展配置文件

ESLint 配置文件中的 extends 字段可以擴(kuò)展集成現(xiàn)有的規(guī)則,比如著名的 Airbnb JavaScript Style,可以通過安裝 eslint-config-airbnb-base 集成使用。

開始使用

因?yàn)楸救吮容^偏向于 Airbnb JavaScript Style,所以今后的代碼規(guī)范將均使用此規(guī)范。并且我們這里是 Vuejs 項(xiàng)目,所以需要同時(shí)對(duì) .vue 文件中的 js 代碼進(jìn)行檢測(cè),就需要利用 eslint-plugin-vue 插件來搭配使用。

首先,安裝依賴:

npm install eslint eslint-config-airbnb-base eslint-plugin-import eslint-plugin-vue --save-dev

其次,在項(xiàng)目根目錄下新建 .eslintrc.js 文件,配置如下:

module.exports = {
  extends: [ 'plugin:vue/essential', 'airbnb-base' ],
};

最后,在 package.json 中添加 lint 腳本:

// ...
"scripts": {
  // ...
  "lint": "eslint --ext .js,.vue src"
},
// ...

當(dāng)然你也可以全局安裝以上依賴,這樣你可以直接運(yùn)行 eslint --ext .js,.vue src 命令。

Ok, 配置好了~

命令行運(yùn)行 npm run lint,輸出如下:

$ npm run lint

> vue-webpack-demo@0.0.1 lint /Users/Yuga/Desktop/VueLearning/You-May-Not-Know-Vuejs/chapter2/4
> eslint --ext .js,.vue src

/Users/Yuga/Desktop/VueLearning/You-May-Not-Know-Vuejs/chapter2/4/src/hello1.vue
  17:16  error    Missing trailing comma        comma-dangle
  26:9   warning  Unexpected console statement  no-console
  38:9   warning  Unexpected console statement  no-console

/Users/Yuga/Desktop/VueLearning/You-May-Not-Know-Vuejs/chapter2/4/src/utils.js
  15:3  warning  Unexpected console statement  no-console

? 4 problems (1 error, 3 warnings)
  1 error, 0 warnings potentially fixable with the `--fix` option.

你會(huì)發(fā)現(xiàn)檢查出一堆錯(cuò)誤,不要方,輸出的錯(cuò)誤說明的非常明顯,只需要根據(jù)錯(cuò)誤提示行號(hào)去檢查,然后根據(jù)規(guī)則更改就行了。

上面的命令中 --ext 參數(shù)就是用來指定需要檢查的擴(kuò)展名的文件,src 就是指定檢查的目錄。

添加自定義規(guī)則

雖然 Airbnb 的代碼風(fēng)格已經(jīng)很成熟了,但是并不是滿足任何人需求的。有些時(shí)候,如果想修改一些規(guī)則怎么辦?這時(shí)我們可以通過在 .eslintrc.js 文件中添加 rules 字段來自定義。規(guī)則 no-console 就是用來規(guī)定禁止使用 console 來調(diào)試程序,Airbnb 代碼風(fēng)格在檢查是會(huì)輸出如下警告:

/Users/Yuga/Desktop/VueLearning/You-May-Not-Know-Vuejs/chapter2/4/src/hello1.vue
  26:9  warning  Unexpected console statement  no-console

但是我們有些時(shí)候項(xiàng)目經(jīng)常使用到 console,所以我會(huì)關(guān)閉該條規(guī)則,修改 .eslintrc.js 文件如下:

module.exports = {
  extends: [ 'plugin:vue/essential', 'airbnb-base' ],
  rules: {
    'no-console': 'off',
  }
};

這樣在運(yùn)行 npm run lint 時(shí),命令行就不會(huì)輸出 no-console 警告了。

有關(guān) ESLint 的基礎(chǔ)教程請(qǐng)閱讀 ESLint,關(guān)于 Airbnb 代碼規(guī)范,請(qǐng)閱讀 Airbnb JavaScript Style。

總結(jié)

讀完你會(huì)發(fā)現(xiàn),之前自己一直不敢使用的 ESLint 是如此的簡單,無論是安裝還是配置,非常的人性化。

作為一名優(yōu)秀的程序員,規(guī)范化的代碼風(fēng)格尤為重要,這不僅能降低代碼出錯(cuò)率,而且非常有益于別人閱讀你的代碼。說到代碼閱讀,代碼注釋也是必不可少的。俗話說 己所不欲,勿施于人,如果你不想閱讀 shit 一樣的代碼,那么就先從自身做起,趕緊在你的項(xiàng)目中實(shí)踐起來吧~

源碼在此

專題目錄

You-May-Not-Know-Vuejs

最后編輯于
?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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