ESLint 支持幾種格式的配置文件:vue
- JavaScript - 使用
.eslintrc.js
而後輸出一個配置對象。 - YAML - 使用
.eslintrc.yaml
或.eslintrc.yml
去定義配置的結構。 - JSON - 使用
.eslintrc.json
去定義配置的結構,ESLint 的 JSON 文件容許 JavaScript 風格的註釋。 - (棄用) - 使用
.eslintrc
,可使 JSON 也能夠是 YAML。 - package.json - 在
package.json
裏建立一個eslintConfig
屬性,在那裏定義你的配置。
若是同一個目錄下有多個配置文件,ESLint 只會使用一個。優先級順序以下:node
.eslintrc.js
.eslintrc.yaml
.eslintrc.yml
.eslintrc.json
.eslintrc
package.json
示例代碼(文件.eslintrc.js):es6
{ // 繼承規則eslint:recommended // "extends": "eslint:recommended", /* 默認狀況下,ESLint 會在全部父級目錄裏尋找配置文件 ESLint 一旦發現配置文件中有 "root": true,它就會中止在父級目錄中尋找 */ "root": true, /* 指定你想啓用的環境 browser - 瀏覽器環境中的全局變量。 node - Node.js 全局變量和 Node.js 做用域。 commonjs - CommonJS 全局變量和 CommonJS 做用域 (用於 Browserify/WebPack 打包的只在瀏覽器中運行的代碼)。 shared-node-browser - Node.js 和 Browser 通用全局變量。 es6 - 啓用除了 modules 之外的全部 ECMAScript 6 特性(該選項會自動設置 ecmaVersion 解析器選項爲 6)。 ... [參考地址] http://eslint.cn/docs/user-guide/configuring#specifying-environments */ "env": { "browser": true, "node": true, "commonjs": true, "es6": true, "shared-node-browser": true }, /* 使用 globals 指出你要使用的全局變量,將變量設置爲 true 將容許變量被重寫,或 false 將不容許被重寫 [參考地址] http://eslint.cn/docs/user-guide/configuring#specifying-globals */ "globals": { // "var1": true, // "var2": false }, /* ESLint 支持使用第三方插件。在使用插件以前,你必須使用 npm 安裝它。 在配置文件裏配置插件時,可使用 plugins 關鍵字來存放插件名字的列表。插件名稱能夠省略 eslint-plugin- 前綴。 [參考地址] http://eslint.cn/docs/user-guide/configuring#configuring-plugins */ "plugins": [ // "plugin1", // "eslint-plugin-plugin2" ], /* 解析器, ESLint 默認使用esprima做爲其解析器,你能夠在配置文件中指定一個不一樣的解析器 [參考地址] http://eslint.cn/docs/user-guide/configuring#specifying-parser */ "parser": "babel-eslint", /* 規則 [規則配置參考] http://eslint.cn/docs/user-guide/configuring#configuring-rules [具體規則解釋] http://eslint.cn/docs/rules/${rule-key} */ "rules": { // 要求或禁止使用分號代替 ASI "semi": ["error", "always"], // 禁止使用alert "no-alert": "error", // 禁止定義未使用的變量 "no-unused-vars": "error", // 不容許在 case 子句中使用詞法聲明 "no-case-declarations": "error", // 禁止修改類聲明的變量 "no-class-assign": "error", // 要求在構造函數中有 super() 的調用 "constructor-super":"error", // 禁止與 -0 進行比較 "no-compare-neg-zero":"error", // 禁止條件表達式中出現賦值操做符 "no-cond-assign":"error", // 禁用 console "no-console":"error", // 禁止修改 const 聲明的變量 "no-const-assign":"error", // 禁止在條件中使用常量表達式 "no-constant-condition":"error", // 禁止在正則表達式中使用控制字符 "no-control-regex":"error", // 禁用 debugger "no-debugger":"error", // 禁止刪除變量 "no-delete-var":"error", // 禁止 function 定義中出現重名參數 "no-dupe-args":"error", // 禁止類成員中出現重複的名稱 "no-dupe-class-members":"error", // 禁止對象字面量中出現重複的 key "no-dupe-keys":"error", // 禁止出現重複的 case 標籤 "no-duplicate-case":"error", // 禁止出現空語句塊 "no-empty":"error", // 禁止在正則表達式中使用空字符集 "no-empty-character-class":"error", // 禁止使用空解構模式 "no-empty-pattern":"error", // 禁止對 catch 子句的參數從新賦值 "no-ex-assign":"error", // 禁止沒必要要的布爾轉換 "no-extra-boolean-cast":"error", // 禁止沒必要要的分號 "no-extra-semi":"error", // 禁止 case 語句落空 "no-fallthrough":"error", // 禁止對 function 聲明從新賦值 "no-func-assign":"error", // 禁止對原生對象或只讀的全局對象進行賦值 "no-global-assign":"error", // 禁止在嵌套的塊中出現變量聲明或 function 聲明 "no-inner-declarations":"error", // 禁止 RegExp 構造函數中存在無效的正則表達式字符串 "no-invalid-regexp":"error", // 禁止在字符串和註釋以外不規則的空白 "no-irregular-whitespace":"error", // 禁止空格和 tab 的混合縮進 "no-mixed-spaces-and-tabs":"error", // 禁止 Symbolnew 操做符和 new 一塊兒使用 "no-new-symbol":"error", // 禁止把全局對象做爲函數調用 "no-obj-calls":"error", // 禁用八進制字面量 "no-octal":"error", // 禁止屢次聲明同一變量 "no-redeclare":"error", // 禁止正則表達式字面量中出現多個空格 "no-regex-spaces":"error", // 禁止自我賦值 "no-self-assign":"error", // 禁用稀疏數組稀,疏數組包括不少空位置,常常是因爲在數組字面量中使用多個逗號形成的,例如:var items = [,,]; "no-sparse-arrays":"error", // 禁止在構造函數中,在調用 super() 以前使用 this 或 super "no-this-before-super":"error", // 禁用未聲明的變量,除非它們在 /*global */ 註釋中被提到 "no-undef":"error", // 禁止出現使人困惑的多行表達式 "no-unexpected-multiline":"error", // 禁止在return、throw、continue 和 break 語句以後出現不可達代碼 "no-unreachable":"error", // 禁止在 finally 語句塊中出現控制流語句 "no-unsafe-finally":"error", // 禁止對關係運算符的左操做數使用否認操做符 "no-unsafe-negation":"error", // 禁用未使用過的標籤 "no-unused-labels":"error", // 禁用沒必要要的轉義字符 "no-useless-escape":"error", // 要求使用 let 或 const 而不是 var "no-var": "error", // 禁止出現多行空行 "no-multiple-empty-lines": ["error", { "max": 1}], // 禁用行尾空格 "no-trailing-spaces": "error", // 禁止使用多個空格 "no-multi-spaces": "error", // 要求 generator 函數內有 yield "require-yield":"error", // 要求使用 isNaN() 檢查 NaN "use-isnan":"error", // 強制 typeof 表達式與有效的字符串進行比較 "valid-typeof":"error", // 強制使用一致的反勾號、雙引號或單引號(單引號) "quotes": ["error", "single"], // 強制在逗號先後使用一致的空格 "comma-spacing": ["error", { "before": false, "after": true }], // 強制使用一致的縮進 "indent": ["error", 4], // 要求或禁止末尾逗號 "comma-dangle": ["error", "never"], // 強制在圓括號內使用一致的空格 "space-in-parens": ["error", "never"], // 要求操做符周圍有空格 "space-infix-ops": "error", // 強制在對象字面量的屬性中鍵和值之間使用一致的間距 "key-spacing": ["error", { "mode": "strict" }], // 禁用逗號操做符 // "no-sequences": "error", // 強制操做符使用一致的換行符 "operator-linebreak": ["error", "after"], // 要求或禁止在變量聲明周圍換行 "one-var-declaration-per-line": ["error", "initializations"], // 要求對象字面量屬性名稱用引號括起來 // "quote-props": ["error", "always"], // 更多其餘規則,參考地址:http://eslint.cn/docs/rules/ } }
對於不須要作語法檢測的可在.eslintignore文件中配置,示例以下:正則表達式
bin/* src/js/libs/*.js
命令行用法示例(對src目錄下的.js,.vue格式的文件作語法檢測,配置文件.eslintrc.js ,忽略文件配置:.eslintignore, 而後將結果輸出到eslint-report.json): shell
eslint --ext .js,.vue src/ --config .eslintrc.js --output-file ./eslint-report.json --ignore-path .eslintignore
加--fix 參數可自動修復部分語法規範問題 npm