开发者指南
欢迎贡献。
🐛 错误报告
如果您认为您在 ESLint 中发现了错误,请在 GitHub 上创建一个新 issue或提交一个拉取请求。
请尽可能详细地描述您的问题,以帮助我们正确解决您的问题。如果我们需要对问题进行分类并不断要求人们提供更多详细信息,那将浪费我们实际解决问题的时间。请在您的问题中包含大量详细信息,以帮助我们尽可能提高效率。
✨ 提出新规则或规则变更
要添加新规则或规则变更,您应该
- 在 GitHub 上创建 issue 并描述建议的规则
- 使用
npm run new <规则名称> <作者姓名>
命令生成新规则 - 编写测试场景并实现逻辑
- 在生成的
docs
文件中描述规则 - 确保所有测试都通过
- 运行
npm run lint
并修复所有错误 - 运行
npm run update
以更新自述文件和推荐配置 - 创建 PR 并在描述中链接创建的 issue
我们非常乐于看到潜在的贡献,所以请不要犹豫。如果您有任何建议、想法或问题,请随时添加新的 issue,但请先确保您的问题没有重复之前的问题。
🔥 使用规则
在开始编写新规则之前,请阅读ESLint 官方指南。
接下来,为了了解您要检查的代码的 AST 结构,请使用astexplorer.net。 astexplorer.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
注释来抑制警告。