跳至内容

开发者指南

欢迎贡献。

🐛 错误报告

如果您认为您在 ESLint 中发现了错误,请在 GitHub 上创建一个新 issue或提交一个拉取请求。

请尽可能详细地描述您的问题,以帮助我们正确解决您的问题。如果我们需要对问题进行分类并不断要求人们提供更多详细信息,那将浪费我们实际解决问题的时间。请在您的问题中包含大量详细信息,以帮助我们尽可能提高效率。

✨ 提出新规则或规则变更

要添加新规则或规则变更,您应该

  • 在 GitHub 上创建 issue 并描述建议的规则
  • 使用 npm run new <规则名称> <作者姓名> 命令生成新规则
  • 编写测试场景并实现逻辑
  • 在生成的 docs 文件中描述规则
  • 确保所有测试都通过
  • 运行 npm run lint 并修复所有错误
  • 运行 npm run update 以更新自述文件和推荐配置
  • 创建 PR 并在描述中链接创建的 issue

我们非常乐于看到潜在的贡献,所以请不要犹豫。如果您有任何建议、想法或问题,请随时添加新的 issue,但请先确保您的问题没有重复之前的问题。

🔥 使用规则

在开始编写新规则之前,请阅读ESLint 官方指南

接下来,为了了解您要检查的代码的 AST 结构,请使用astexplorer.netastexplorer.net 是一个很棒的 AST 检查工具,也支持 Vue 模板。

打开astexplorer.net后,选择 Vue 作为语法,选择 vue-eslint-parser 作为解析器。

由于 Vue 中的单文件组件不是纯 JavaScript,我们不能使用默认解析器,因此我们不得不引入一个额外的解析器:vue-eslint-parser,它生成增强的 AST,其中包含表示模板语法特定部分的节点,以及 <script> 标签内的内容。

要详细了解生成的 AST 中的某些节点,请访问此处

vue-eslint-parser 提供了一些有用的解析器服务,以帮助遍历生成的 AST 并访问模板的标记

  • context.parserServices.defineTemplateBodyVisitor(visitor, scriptVisitor)
  • context.parserServices.getTemplateBodyTokenStore()

查看示例规则以更好地了解它们的工作原理。

请注意,关于您将在测试中编写哪种代码示例,您必须相应地在 RuleTester 中设置解析器(不过您可以在每个测试用例的基础上进行设置)。 请参阅此处的示例

如果您遇到困难,请记住,您可以从许多规则中学习,如果您找不到合适的解决方案,请随时在 issue 中联系我们。我们很乐意提供帮助!

✅ 使用 TypeScript 进行 JSDoc 类型检查

我们已通过 TypeScript 和 JSDoc 启用了类型检查。
执行类型检查的命令是:npm run tsc

这只是为了帮助您编写规则,而不是进行严格的类型检查。如果您发现难以解决类型检查警告,请随意使用 // @ts-nocheck// @ts-ignore 注释来抑制警告。