Lint 規(guī)范是對(duì)前端代碼的書(shū)寫(xiě)規(guī)則進(jìn)行限制,屬于代碼檢查和格式化工具。一般主要有以下幾種規(guī)范形式:ESLint規(guī)范、Prettier規(guī)范、StyleLint規(guī)范。
各種Lint 規(guī)范詳述
ESLint
- 主要職責(zé):代碼質(zhì)量檢查和編碼風(fēng)格規(guī)范
- 關(guān)注點(diǎn):
發(fā)現(xiàn)潛在的代碼錯(cuò)誤和問(wèn)題
強(qiáng)制執(zhí)行編碼規(guī)范和最佳實(shí)踐
檢查變量使用、函數(shù)調(diào)用等邏輯問(wèn)題 - 示例規(guī)則:
未使用的變量
未定義的變量
不合理的條件判斷
函數(shù)復(fù)雜度過(guò)高 - 配置文件
Prettier
- 主要職責(zé):代碼格式化
- 關(guān)注點(diǎn):
統(tǒng)一代碼格式,如縮進(jìn)、空格、換行等
不關(guān)心代碼邏輯和質(zhì)量問(wèn)題
專(zhuān)注于代碼的"美觀" - 示例規(guī)則:
行寬限制
縮進(jìn)風(fēng)格(空格或制表符)
引號(hào)風(fēng)格(單引號(hào)或雙引號(hào))
尾隨逗號(hào) - 配置文件
StyleLint
- 主要職責(zé):CSS/SCSS等樣式代碼的檢查
- 關(guān)注點(diǎn):
樣式代碼的質(zhì)量和一致性
CSS屬性的順序和規(guī)范
避免冗余和過(guò)時(shí)的CSS規(guī)則 - 示例規(guī)則:
顏色格式(HEX、RGB等)
選擇器命名規(guī)范
屬性排序
避免使用!important - 配置文件
此外,還有些其他的 常用lint 規(guī)范:
- TypeScript的類(lèi)型檢查(tsconfig.json)
- Commitlint,用于檢查Git提交信息是否符合規(guī)范(commitlint.config.js)
注意 - rush 項(xiàng)目
需要注意的是,在 rush 項(xiàng)目中,子項(xiàng)目可以共用 monorepo 中的公共 lint 規(guī)范,而不用單獨(dú)去聲明。
具體方式為在 monorepo 中可以用單獨(dú)一個(gè) packages 來(lái)定義統(tǒng)一的 lint 規(guī)范,然后在各子項(xiàng)目中通過(guò) package.json 引用該 lint 規(guī)范包,而不用單獨(dú)聲明 lint 文件的引用,子項(xiàng)目就會(huì)默認(rèn)使用該統(tǒng)一的 lint 規(guī)范了。
如果子項(xiàng)目不直接引用 monorepo 中的公共 lint 規(guī)范包,各規(guī)范也會(huì)自動(dòng)逐級(jí)向上找配置文件,直到找到并引用。但這種方式容易導(dǎo)致"幽靈依賴(lài)",不推薦。
配置文件的查找機(jī)制
各種lint工具(ESLint、Prettier、StyleLint等)在查找配置文件時(shí),通常遵循以下查找機(jī)制:
- ESLint的查找機(jī)制
ESLint會(huì)按照以下順序查找配置:
首先查找項(xiàng)目?jī)?nèi)的配置文件(.eslintrc.*、package.json中的eslintConfig字段)
如果沒(méi)有找到,則向上級(jí)目錄查找,直到找到配置文件或到達(dá)根目錄
如果配置文件中設(shè)置了"root": true,則停止向上查找 - Prettier的查找機(jī)制
Prettier的查找邏輯類(lèi)似:
從當(dāng)前工作目錄開(kāi)始查找配置文件(.prettierrc.*、prettier.config.*等)
如果沒(méi)有找到,則向上級(jí)目錄查找,直到找到配置文件或到達(dá)根目錄 - StyleLint的查找機(jī)制
StyleLint也遵循類(lèi)似的模式:
從當(dāng)前目錄查找配置文件(.stylelintrc.*、stylelint.config.*等)
如果沒(méi)有找到,則向上級(jí)目錄查找,直到找到配置文件或到達(dá)根目錄