ESLint 使用指南 === [TOC] ## 1. 簡介 ESLint是JaveScript的一個語法檢查器,也有支援TypeScript,可以依預設或自定義的規範去檢查程式碼,並輸出結果,利用此功能可以方便團隊統一coding style。 ## 2. 安裝 node.js 要安裝 ESLint 需要用到 npm,所以需要去安裝node.js 下載連結:[node.js](https://nodejs.org/zh-tw/download/) 可用以下指令確認有無安裝及安裝的版本 ``` $ npm -v >8.5.5 $ node -v >16.15.0 ``` ## 3. 安裝 ESLint v8.16.0 到專案的目錄下輸入以下指令,安裝ESLint,為了統一大家的版本,所以安裝特定的版本。 ``` $ npm install eslint@8.16.0 --save-dev (有被阻擋可以試試 sudo npm install eslint@8.16.0 -g --unsafe-perm=true --allow-root) ``` 這樣會安裝到專案的dev環境上,要執行的話,就要把指令寫到package.json裡的scripts中 ``` // package.json的內容,這裡只顯示scripts "scripts": { "eslint:init": "eslint --init", // 初始設定eslint "eslint:check": "eslint assets --ext .ts,.js", // 檢查附檔名為ts及js的檔案 "eslint:fix": "eslint assets --ext .ts,.js --fix" // 自動修復 }, --- $ npm run eslint:init ``` 若是要安裝到global環境中在指令加入 -g,如下 ``` $ npm install eslint@8.16.0 --save-dev -g ``` 這樣的話,是可以直接輸入 eslint 指令來執行指令 例如: ``` $ eslint --init ``` ## 4. 設定 ESLint ### 4-1 建立配置檔 輸入以下指令(設定在package.json中指令) ``` $ npm run eslint:init // eslint --init ``` 接下來會有一些問題需要回答,如下(有哪些問題可能跟你的eslint的版本有關) 1. How would you like to use ESLint?   To check syntax only   To check syntax and find problems > **To check syntax, find problems, and enforce code style** 2. What type of modules does your project use? ... > **JavaScript modules (import/export)**   CommonJS (require/exports)   None of these 3. Which framework does your project use? ... > **React**   Vue.js   None of these 4. Does your project use TypeScript? » No / **Yes** 5. Where does your code run? ... (Press <space> to select, <a> to toggle all, <i> to invert selection) **√ Browser** **√ Node** (這題可以多選) 6. How would you like to define a style for your project? ... > **Use a popular style guide**   Answer questions about your style 7. Which style guide do you want to follow? ...   Airbnb: https://github.com/airbnb/javascript > **Standard**: https://github.com/standard/standard   Google: https://github.com/google/eslint-config-google   XO: https://github.com/xojs/eslint-config-xo (這題可以選擇要跟隨哪一個流行規範) 8. What format do you want your config file to be in? ... > **JavaScript**   YAML   JSON (這題會設定檔案的格式) >註:上面顯示的粗體字是我這邊測試用做的選擇 回答完這些問題,便會依照你的回答生成.eslintrc.js(也可以設定成其他的檔案格式如.json)。 ### 4-2 自訂義規範設定 在.eslintrc.js這個檔案裡,可以在rules的項目中設定檢查的規範。 詳細的項目在[eslint rules](http://eslint.cn/docs/rules/),可以依照需求去設定所要的規範,設定方法如下: ``` /** * 規則寫法 * 1、'semi': 1; -- 0關閉,1警告,2錯誤 * 2、'prefer-const': 'off'; -- off關閉,warn警告,error錯誤 * 3、'quotes': ['error', 'single']; 'error'是提示類型,'single'是參數。參數不止一個的時候寫成{} */ rules: { 'semi': 1, // 結尾分號確認 [警告] 'prefer-const': 'off', // 強制設定無改變的變數要用const宣告 [關閉] 'quotes': ['error', 'single'], // 字串的定義符號 [錯誤,單引號] - 不使用單引號就會報錯 }, ``` ## 5. 用 eslint 檢查程式碼 輸入以下指令(設定在package.json中指令),就會開始執行檢查 ``` $ npm run eslint:check // eslint assets --ext .ts,.js ``` ![](https://i.imgur.com/DATLY30.png) 有一些格式,是可以讓eslint去做自動修復的,使用以下指令進行修復 ``` $ npm run eslint:fix // eslint assets --ext .ts,.js ``` ![](https://i.imgur.com/phD4xc7.png) 不過不是全部的問題都可以用自動修復,遇到沒法自動修復的,請自行手動修復。 ## 6. VsCode 安裝 eslint 延伸模組 一般來說,我們會需要用指令來讓eslint檢查程式碼,然後才會輸出結果,會變成每次要檢查都要輸入指令,沒辦法馬上知道修改後的結果,而使用VsCode的eslint延伸模組,可以更方便的達成這件事。 ![](https://i.imgur.com/wiCi5kj.png) 安裝後,不符合規範的code會顯示紅線,可以比較容易知道哪裡需要修改,修改了也會即時反應修改的程式是否符合規範。 ![](https://i.imgur.com/Y2pGs68.png) ### 設定快速格式化 1. VsCode安裝ESLint 2. 啟用ESLint:檔案>喜好設定>設定 搜尋「eslint」> Eslint format:Enable 打勾 ![](https://i.imgur.com/HUhS6pK.png =50%x) 3. 設定預設格式器:Ctrl+Shift+P > Format Document > 設定預設格式器 > ESLint ![](https://i.imgur.com/d8CWf1y.png =50%x) ## 7. 忽略檢測的方式 當有文件是不需要做檢查的時候,可以用此方式處理。 於code中加入 ``` /* eslint-disable */ ``` 會關閉eslint的檢查,使這之後的code不做eslint的規範檢查,之後再加入 ``` /* eslint-enable */ ``` 則會再開啟eslint的檢查,使之後的code會做檢查。 範例: ``` /* eslint-disable */ console.log('不會檢查'); console.log('也不會檢查'); /* eslint-enable */ console.log('會檢查'); ``` ## 參考資料 > https://forum.cocos.org/t/topic/125862 > https://ithelp.ithome.com.tw/articles/10215259 >