簡體   English   中英

您如何僅針對特定規則或一組規則運行 eslint - 僅命令行

[英]How do you run eslint for only a specific rule or set of rules - command line only

我知道你可以在.eslintrc文件中定義規則,但是如果我只想運行eslint並檢查一個特定的規則怎么辦?

例如$ eslint helpme.js --rule some-important-rule

我不知道這是否是最好的方法,但我能夠做到這一點:

$ eslint helpme.js --no-eslintrc --env "es6" --env "node" --parser-options "{ecmaVersion: 2018}" --rule "{some-important-rule: error}"

注意:使用這種方法(完全忽略.eslintrc ),您仍然需要從.eslintrc添加一些東西,例如您的環境和解析器選項。

如果你想使用 .eslintrc 文件來保存你的配置(解析器、插件設置等),你可以使用帶有--rule=some-important-rule標志的eslint- nibble。 這將尊重您的正常配置,但僅向您顯示該規則中的錯誤。 如果您想在 CI 環境之類的環境中運行它,還有其他一些標志,例如--no-interactive

免責聲明:我是 eslint-nibble 的創建者。

試試ESLint 自定義格式化程序

可以用來過濾部分規則,你要關注的文件。

你不需要:

  • 編輯你的 ESLint 配置文件。
  • 使用復雜的命令。

過濾器文件的演示包含規則 id 為prop-types錯誤:

// ./eslint-file-path-formatter.js
const fs = require('fs');

function containRules(result, targetRuleId) {
  if (!result || !targetRuleId) {
    return false;
  }

  return result.messages.some((cur) => {
    // console.log(`cur?.ruleId = ${cur?.ruleId}`);
    if (cur?.ruleId?.includes(targetRuleId)) {
      return true;
    }
  });
}

module.exports = function (results, context) {
  const summary = [];
  results.forEach((cur) => {
    if (containRules(cur, 'prop-types')) {
      summary.push(`'${cur.filePath}',`);
    }
  });

  // fs.writeFileSync('eslint-error-files.txt', summary.join('\n'));
  // return 'Done Write';

  return summary.join('\n');
};

用法:

eslint . -f ./eslint-file-path-formatter.js

然后這個格式化程序會將所有文件名打印到控制台。

您還可以將結果寫入本地文件,隨心所欲。

在仍然使用.eslintrc的同時查看單個規則輸出的簡單方法是使用 grep:

$ eslint helpme.js | egrep "(^/|some\-important\-rule$)"

擴展@matrik 答案,這不需要我再次定義所有 eslint 配置並且還顯示文件名。

eslint helpme.js | egrep "react/jsx-no-literals" -B 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM