整合 ESLint, Prettier, Husky, lint-staged 維護團隊開發品質
圖片來源: Maintain code consistency using ESLint, Prettier, husky and lint-staged
前言
由於公司的專案缺乏統一的程式碼風格和格式規範,這對於團隊的協作和專案的維護都帶來了一些困擾。主要遇到的問題是每個開發人員都有自己的 coding style 和格式偏好,各自使用的編輯器的 formatter 也不盡相同,這導致大家的自動排版格式都不太一樣。同時,許多人使用 VSCode 編輯器的 formatOnSave 功能,這個功能雖然方便,但常常會把與修改內容無關的程式碼一起自動格式化並且 commit,這些跟真正修改內容無關的 code 會影響到 reviewer 檢查提交者的程式碼。
為了改善這種情況,我決定幫公司導入 ESLint
、Prettier
、Husky
和 lint-staged
等工具來統一程式碼風格和格式規範,在編輯頁面就讓所有開發者使用相同的 coding style 與 format ,並且在提交程式碼之前進行檢查,強制 push 到 Github/GitLab 的 Code 都是採用相同的風格與規範,從而保證程式碼品質和提高團隊開發效率。我將導入的過程與查詢的資料記錄下來,方便未來創建新專案時可以 follow 相同的步驟導入這些工具。
工具介紹
以下是這些工具的簡單介紹和協作使用方式:
ESLint
:靜態程式碼分析工具,用於檢查 JavaScript 程式碼中的錯誤和風格問題。可以透過在專案根目錄下的.eslintrc
配置檔案進行自訂的規則設置。Prettier
:程式碼格式化工具,可以自動調整程式碼的縮排、空格、引號等格式問題。可以透過在專案根目錄下的.prettierrc
配置檔案進行自訂的格式化設置。Husky
:Git hooks 工具,可以在 Git 版本控制系統中設置 pre-commit 和 pre-push 的鉤子,讓開發人員在進行 commit 和 push 操作前執行指定的腳本。lint-staged
:一個 Git hooks 工具,可以在 Git pre-commit 鉤子執行時對指定的檔案進行 lint 檢查以及 format 等動作,以確保程式碼符合預定的規範和標準。
ESLint
ESLint
是一個靜態程式碼分析工具,用於檢查 JavaScript 程式碼中的錯誤和風格問題。它可以幫助開發者在開發過程中發現和修復程式碼問題,從而提高程式碼品質和開發效率。ESLint
可以通過定義開頭為 .eslintrc
的配置文件進行自定義設置,例如指定需要檢查的規則、忽略某些檔案或目錄等,同時可以通過 .eslintignore 文件來排除不需要進行 Linter 檢查的文件或文件夾
安裝並且配置基本 config
這個步驟可以 follow ESLint 官方的 Quick start,使用下列指令:
npm init @eslint/config
CLI 工具會問以下幾個問題來幫助配置 .eslintrc
✔ How would you like to use ESLint? · style
✔ What type of modules does your project use? · esm
✔ Which framework does your project use? · react
✔ Does your project use TypeScript? · No / Yes
✔ Where does your code run? · browser
✔ How would you like to define a style for your project? · guide
✔ Which style guide do you want to follow? · airbnb
✔ What format do you want your config file to be in? · JSON
配置完成後會產生一個 .eslintrc 開頭的 config 檔,以下為一個範例:
# .eslintrc.json
{
"env": {
"browser": true,
"es2021": true
},
"extends": [
"plugin:react/recommended",
"airbnb"
],
"overrides": [
],
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module"
},
"plugins": [
"react"
],
"rules": {
}
}