What Is a Rule?

Rule 是ESLint 架构中最专业的部分,规则能做的很少,它们只是对提供的 AST 执行的一组指令。它们获取以下传入的上下文信息,但主要职责是:检查 AST、报告警告。我们使用时只需对已有 Rule 进行对应的配置即可达到代码检查的目的。

  1. // .eslintrc.js
  2. // 在 rules 配置规则的属性即可使用;详细配置介绍在配置主题中给出。
  3. rules: {
  4. "eslint-plugin/prefer-message-ids": "error",
  5. }

Rule Structure

  1. // 规则源码的基本结构
  2. /**
  3. * @fileoverview Rule to disallow unnecessary semicolons
  4. * @author Nicholas C. Zakas
  5. */
  6. "use strict";
  7. //------------------------------------------------------------------------------
  8. // Rule Definition
  9. //------------------------------------------------------------------------------
  10. module.exports = {
  11. meta: {
  12. // 规则的类型:
  13. // problem:会导致错误
  14. // suggestion:有更合适的方案
  15. // layout:程序外观
  16. type: "suggestion",
  17. docs: {
  18. description: "disallow unnecessary semicolons",
  19. // 规则在规则首页处于的分类
  20. // Possible Errors:规则与 JavaScript 代码中可能的错误或逻辑错误有关
  21. // Best Practices:规则是关于最佳实践的,帮助你避免一些问题
  22. // Strict Mode:规则与使用严格模式和严格模式指令有关
  23. // Variables:规则与变量声明有关
  24. // Node.js and CommonJS:规则是关于Node.js 或 在浏览器中使用CommonJS 的
  25. // Stylistic Issues:规则是关于风格指南的,而且是非常主观的
  26. // ECMAScript 6:规则只与 ES6 有关, 即通常所说的 ES2015
  27. // ...
  28. category: "Possible Errors",
  29. // 所有的规则默认都是禁用的。
  30. // 在配置文件中,使用 "extends": "eslint:recommended" 来启用推荐的规则。
  31. recommended: true,
  32. // 可以访问完整文档的 url
  33. url: "https://eslint.org/docs/rules/no-extra-semi"
  34. },
  35. // 是否会修复代码,需要实现 fix 功能
  36. // 如果 fixable 为 false 实现了 fix 也不会修复
  37. fixable: "code",
  38. // 表明规则是已被弃用,规则尚未被弃用,可以省略
  39. deprecated: false,
  40. // 在不支持规则的情况下,指定替换的规则
  41. replacedBy: [],
  42. // 提供配置选项,相当于如何配置的介绍文档
  43. schema: [],
  44. },
  45. //
  46. create: function(context) {
  47. return {
  48. // callback functions
  49. };
  50. }
  51. };