What Is a Rule?
Rule 是ESLint 架构中最专业的部分,规则能做的很少,它们只是对提供的 AST 执行的一组指令。它们获取以下传入的上下文信息,但主要职责是:检查 AST、报告警告。我们使用时只需对已有 Rule 进行对应的配置即可达到代码检查的目的。
// .eslintrc.js
// 在 rules 配置规则的属性即可使用;详细配置介绍在配置主题中给出。
rules: {
"eslint-plugin/prefer-message-ids": "error",
}
Rule Structure
// 规则源码的基本结构
/**
* @fileoverview Rule to disallow unnecessary semicolons
* @author Nicholas C. Zakas
*/
"use strict";
//------------------------------------------------------------------------------
// Rule Definition
//------------------------------------------------------------------------------
module.exports = {
meta: {
// 规则的类型:
// problem:会导致错误
// suggestion:有更合适的方案
// layout:程序外观
type: "suggestion",
docs: {
description: "disallow unnecessary semicolons",
// 规则在规则首页处于的分类
// Possible Errors:规则与 JavaScript 代码中可能的错误或逻辑错误有关
// Best Practices:规则是关于最佳实践的,帮助你避免一些问题
// Strict Mode:规则与使用严格模式和严格模式指令有关
// Variables:规则与变量声明有关
// Node.js and CommonJS:规则是关于Node.js 或 在浏览器中使用CommonJS 的
// Stylistic Issues:规则是关于风格指南的,而且是非常主观的
// ECMAScript 6:规则只与 ES6 有关, 即通常所说的 ES2015
// ...
category: "Possible Errors",
// 所有的规则默认都是禁用的。
// 在配置文件中,使用 "extends": "eslint:recommended" 来启用推荐的规则。
recommended: true,
// 可以访问完整文档的 url
url: "https://eslint.org/docs/rules/no-extra-semi"
},
// 是否会修复代码,需要实现 fix 功能
// 如果 fixable 为 false 实现了 fix 也不会修复
fixable: "code",
// 表明规则是已被弃用,规则尚未被弃用,可以省略
deprecated: false,
// 在不支持规则的情况下,指定替换的规则
replacedBy: [],
// 提供配置选项,相当于如何配置的介绍文档
schema: [],
},
//
create: function(context) {
return {
// callback functions
};
}
};