eslint規則記錄

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

  1. .eslintrc.js
  2. .eslintrc.yaml
  3. .eslintrc.yml
  4. .eslintrc.json
  5. .eslintrc
  6. 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

相關文章
相關標籤/搜索