繁体   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