动态

详情 返回 返回

ESLint學習筆記 - 动态 详情

ESLint

什麼是ESLint?

ESLint 是一個可配置的 JavaScript 檢查器。它可以幫助你發現並修復 JavaScript 代碼中的問題。問題可以指潛在的運行時漏洞、未使用最佳實踐、風格問題等。

Rules(規則)

Rules是ESLint的核心構建模塊。Rules會驗證你的代碼是否符合預期,並且規定了在不符合預期時應該怎麼做。規則還可以包含針對該規則的額外配置項。

配置Rules

規則嚴重性

要改變規則的設置,你必須把規則 ID 設置為這些值之一:

  • "off" 或 0 - 關閉規則
  • "warn" 或 1 - 啓用並視作警告(不影響退出)
  • "error" 或 2 - 啓用並視作錯誤(觸發時退出代碼為 1)
    通常會將規則設置為 "error" 以便在持續集成測試、pre- commit 檢查和拉取請求合併中強制遵守規則,而 ESLint 則以非零代碼退出。

示例:

// .eslintrc.js
module.exports = {
    // ...
    rules: {
        curly: "error",
        // 配置分號的規則,第一個為規則嚴重性,後面的是規則的選項
        semi: ["error", "always"]
    }
}
配置註釋
  • 在文件的一部分中禁用規則警告

    // 禁用所有
    /* eslint-disable */
    
    alert('foo');
    
    /* eslint-enable */
    
    // 禁用特定規則
    /* eslint-disable no-alert */
    
    alert('foo');
    
    /* eslint-enable no-alert */
  • 禁用整個文件中的規則警告

    // 禁用所有
    /* eslint-disable */
    alert('foo');
    // 禁用特定規則
    /* eslint no-alert: "off" */
    console.log('foo')

配置文件

ESLint支持多種格式的配置文件(JS, JS Module, YAML, JSON),如果在同一目錄下存在多個配置文件,ESLint 將按照以下優先順序以此使用其一:

  • .eslintrc.js
  • .eslintrc.cjs
  • .eslintrc.yaml
  • .eslintrc.yml
  • .eslintrc.json
  • package.json

擴展配置文件

一個配置文件一旦擴展,就可以繼承另一個配置文件的所有特徵(包括規則、插件和語言選項)並修改所有選項。
通過extends屬性來設置配置文件的擴展,它的值可以是:

  • 一個指定配置的字符串(要麼是配置文件的路徑,要麼是可共享配置的名稱,要麼是 eslint:recommended,要麼是 eslint:all)
  • 一個字符串數組,每個額外的配置都會擴展前面的配置

    // .eslintrc.js
    module.exports = {
      // ...
      extends: [
          'standard',
          'plugin:vue/vue3-essential'
      ]
    }

使用可共享配置包

可共享配置 是導出配置對象的一個 npm 包。當你在項目根目錄下安裝了這個包後,ESLint 就可以使用它了。

extends 屬性值可以省略包名的 eslint-config-前綴。

npm init @eslint/config 命令可以創建一個配置,這樣你就可以擴展一個流行的風格指南(如 eslint-config-standard)。

使用插件配置

插件是一個可以為 ESLint 添加各種擴展功能的 npm 包。一個插件可以執行許多功能,包括但不限於添加新的規則和導出可共享的配置。

plugins屬性值可以省略包名中的eslint-plugin-前綴。

extends 屬性值由以下內容組成:

  • plugin:
  • 包名(可以省略其前綴,如vueeslint-plugin-vue的縮寫)
  • /
  • 配置名稱

    // .eslintrc.js
    module.exports = {
      // ...
      plugins: [
          'vue'
      ],
      extends: [
          'standard',
          'plugin:vue/vue3-essential'
      ]
    }

使用現有配置文件

extends屬性值可以是基於配置文件的絕對或相對路徑。

// .eslintrc.js
module.exports = {
    // ...
    extends: [
        "./node_modules/coding-standard/eslintDefaults.js",
        "./node_modules/coding-standard/.eslintrc-es6",
        "./node_modules/coding-standard/.eslintrc-jsx"
    ]
}

覆蓋配置

有時,更精細的配置是必要的,比如同一目錄下的文件的配置不同。因此,你可以在 overrides 鍵下提供配置,這些配置只會用於符合特定 glob 模式的文件

module.exports = {
  env: {
    browser: true,
    es2021: true
  },
  extends: [
    'standard',
    'plugin:vue/vue3-essential'
  ],
  overrides: [
    {
      env: {
        node: true
      },
      // 指定需要覆蓋配置的文件
      files: [
        '.eslintrc.{js,cjs}'
      ],
      parserOptions: {
        sourceType: 'script'
      }
    }
  ],
  parserOptions: {
    ecmaVersion: 'latest',
    sourceType: 'module'
  },
  plugins: [
    'vue'
  ],
  rules: {
  }
}

插件

ESLint 插件是一個包含 ESLint 規則、配置、處理器和環境變量的集合的 npm 模塊。

配置插件

// .eslintrc.js
module.exports = {
    // ...
    plugins: [
        'vue'
    ]
}

指定處理器

插件可以提供處理器。處理器可以從其他類型的文件中提取 JavaScript 代碼,然後讓 ESLint 對 JavaScript 代碼進行提示,或者處理器可以在預處理中轉換 JavaScript 代碼以達到某些目的。

// .eslintrc.js
module.exports = {
    // ...
    plugins: [
        'a-plugin'
    ],
    processor: 'a-plugin/a-processor'
}
自定義處理器:你也可以在用 ESLint 配置的處理器解析 JavaScript 代碼之前使用處理器先對其進行處理。

命令行 & Node.js API

ESLint 命令行是一個命令行界面,讓你可以在終端進行檢查。命令行有各種可以傳遞給命令的選項。

ESLint 的 Node.js API 讓你可以在 Node.js 代碼中以編程的方式使用 ESLint。該 API 在開發插件、集成和其他與 ESLint 相關的工具時非常有用。

eslint-webpack-plugin這個插件就是基於ESLint的Node.js API開發,在使用new ESLintPlugin(options)時,傳遞的options就可以參考Node.js API Reference

// webpack.config.js
module.exports = {
    // ...
    plugins: [
        new ESLintPlugin({
            // 自動修復
            fix: true,
            // 處理哪些格式的文件
            extensions: [
                '.js',
                '.vue'
            ]
        })
    ]
}
user avatar cshopping 头像 neo_63ef7657efb81 头像 aclisp 头像 smallhuifei 头像
点赞 4 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.