簡介
ESLint 是一個(gè)代碼書寫規(guī)范檢查工具,通過很多規(guī)則檢查來規(guī)范代碼的書寫風(fēng)格,也可以找出一些錯(cuò)誤。ESLint 文檔里列出了規(guī)則說明,規(guī)則詳細(xì)說明里也有示例。上述網(wǎng)站里也有用戶指南、中文版本。
有很多 ESLint 的 config 實(shí)踐可能比直接用 ESLint 更適合自己,我用的就是 airbnb 的。
使用
項(xiàng)目里安裝
npm install eslint
為了使用方便,在 package.json 里的 scripts 里添加
"lint": "./node_modules/.bin/eslint"
然后就可以在命令行里使用以下命令來對文件或文件夾進(jìn)行 ESLint 檢查了。
npm run lint 文件/文件夾
如果要用別的 config 實(shí)踐的要按照可以看它們自己的安裝說明進(jìn)行額外的安裝。
配置文件
在項(xiàng)目目錄里添加 .eslintrc.* 文件,ESLint 會(huì)自動(dòng)讀取它。
文件格式:
- .eslintrc.json
- .eslintrc.js: javascript 格式的配置信息,通過
exports一個(gè)對象來配置 - .eslintrc.yml
- .eslintrc.yaml
- .eslintrc: yml 或 json 格式
也可以在 package.json 里添加 eslintConfig 來寫入配置信息。
配置信息
extends
繼承已啟用的規(guī)則配置,一般使用:
{
"extends": "eslint:recommended"
}
這里配置的規(guī)則是 ESLint 文檔里打勾的規(guī)則。
我用的 eslint-config-airbnb 是:
{
"extends": "airbnb"
}
env
配置啟用環(huán)境,要啟用的環(huán)境寫在這里,并設(shè)置為 true ,如:
{
"env": {
"browser": true,
"node": true
}
}
rule
在 extends 里指定了設(shè)定好要啟用的規(guī)則,但是很多時(shí)候有部分不一樣,在這里可以設(shè)置讓 extends 里部分規(guī)則不啟用。rule 的使用要謹(jǐn)慎。
像在 airbnb 里面啟用了分號(hào)檢查,即必須使用分號(hào),而我不想使用分號(hào),配置如下:
{
"extends": "airbnb",
"rule": {
"semi": “off"
}
}
這里的 semi 就是分號(hào)檢查規(guī)則。
eslint 里很多規(guī)則記不住誰是誰的話,在用 eslint 檢查后它告訴你違背了哪些規(guī)則,然后在文檔里查這些規(guī)則就可以知道規(guī)則具體說明,然后就可以選擇是否使用它。規(guī)則值:
- "off" 或 0 - 關(guān)閉規(guī)則
- "warn" 或 1 - 開啟規(guī)則,使用警告級(jí)別的錯(cuò)誤:warn (不會(huì)導(dǎo)致程序退出)
- "error" 或 2 - 開啟規(guī)則,使用錯(cuò)誤級(jí)別的錯(cuò)誤:error (當(dāng)被觸發(fā)的時(shí)候,程序會(huì)退出)
plugins
第三方插件配置,使用前要 npm 安裝它。
插件名稱可以省略 eslint-plugin- 前綴。
{
"plugins": [
"plugin1",
"eslint-plugin-plugin2"
]
}
globals
很多默認(rèn)開啟規(guī)則的 config 都不允許使用全局變量,它們被認(rèn)為是未定義的變量,由 no-undef 規(guī)則來發(fā)出警告。所以如果要使用全局變量的話,推薦做法是在配置文件里的 globals 里聲明它(等于 true 允許變量被重寫,false 不允許變量被重寫):
{
"globals": {
"globalsVar1": true,
"globalsVar2": false
}
}
參考:
ESLint 中文