首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【实战】自定义 ESLint Plugin

官方如下: ESLint 是在 ECMAScript/JavaScript 代码识别和报告模式匹配工具,它目标是保证代码一致性和避免错误 ESLint 具有以下特点: 使用 Espree[3]...使用 AST 去分析代码模式。 完全插件化。每一个规则都是一个插件,提供了足够可拓展能力,让我们更好定义使用规则。...create 返回是一个对象,其中 key 就是上面提到 AST Selector,在 AST Selector ,我们可以获取对应选中内容,随后我们可以针对选中内容作一定判断,看是否满足我们规则...方法是有的,我们发现,ESlint 是可以通过 getCommentsInside 方法获取到某个 AST Selector 注释,返回给定节点内所有注释标记数组。...基础原理以及如何自定义 Eslint 插件解决对象数组排序问题,除此之外,我们可能还有其他场景可以进行尝试,欢迎大家参与讨论~ 参考 ESLint 工作原理探讨[9] 自定义 ESLint

71110

ESLint如何使用和实现

前言 今天这篇文章,主要聊聊什么是ESLint,为什么要用它?它实现原理是什么?工作如何使用ESLint,以及如何自定义ESLint规则。...ESLint 使用 AST 去分析代码模式 ESLint 是完全插件化。每一个规则都是一个插件并且你可以在运行时添加更多规则。...,我们可以获取对应选中内容,随后我们可以针对选中内容作一定判断,看是否满足我们规则,如果不满足,可用 context.report()抛出问题,ESLint 会利用我们配置对抛出内容做不同展示...我们在日常工作,也可以自定义符合自己团队风格plugin提供给其他队友使用。 工作如何使用ESLint?...; 使用方法: 使用extends继承插件配置,extends不止这种继承方式,即使你传入一个npm包,一个文件相对路径地址,eslint也能继承其中配置。

1.4K10
您找到你想要的搜索结果了吗?
是的
没有找到

代码规范之-理解ESLint、Prettier、EditorConfig

配置文件 .editorconfig 定义规则配置,避免常见代码格式不一致和丑陋 diffs。...它通过解析代码并匹配自己一套规则强制执行一致代码展示格式。 它在美化代码方面有很大优势,配合ESLint可以对ESLint格式化基础上做一个很好补充。 那么如何使用呢?...ESLint ESLint 是一个在 JavaScript 代码通过规则模式匹配作代码识别和报告插件化检测工具,它目的是保证代码规范一致性和及时发现代码问题、提前避免错误发生。...; 减轻了开发者编写自定义规则门槛; 四、ESLint解析时将源码先转换成AST ESLint 使用 Esprima 将源代码解析成 AST分析代码模式,再通过匹配规则定义识别和报告搜集代码信息...采用这种pre-commit阶段增量校验模式,尽量避免对老旧代码影响;这种方式可以稳健地逐步完善老项目; 2. 如何解决Prettier与ESLint配置冲突问题?

2.7K30

前端代码质量—怎样实现一个支持多语言、高扩展性 Linter

比如末尾分号,有些规范禁止末尾分号,有些规范要求末尾分号,有些规范无所谓末尾分号,这时候就需要配置告诉规则,该如何针对输入代码进行诊断。有些规则可能没有配置。...引擎工作 除解析器、规则、配置之外工作都由引擎负责。...规则 对于 JavaScript 以及 TypeScript 各种语法,社区已经有了相当完备 ESLint 插件提供支持了,插件包含了大量规则可供使用。...如果还不能满足需求的话,可以实现自定义规则并发布。 配置 静态配置 配置就是规范实现。然而这么多语言和语法组合,会导致一部分规则冲突,甚至无法正常工作。...在 ESLinter ,ESLinter 提供了控制 ESLint CLIEngine 实例、ESLint 配置接口以及使用 CLIEngine 应用该配置之后检查文件接口,CLIEngine

1.4K20

前端代码质量—怎样实现一个支持多语言、高扩展性 Linter

比如末尾分号,有些规范禁止末尾分号,有些规范要求末尾分号,有些规范无所谓末尾分号,这时候就需要配置告诉规则,该如何针对输入代码进行诊断。有些规则可能没有配置。...引擎工作 除解析器、规则、配置之外工作都由引擎负责。...规则 对于 JavaScript 以及 TypeScript 各种语法,社区已经有了相当完备 ESLint 插件提供支持了,插件包含了大量规则可供使用。...如果还不能满足需求的话,可以实现自定义规则并发布。 配置 静态配置 配置就是规范实现。然而这么多语言和语法组合,会导致一部分规则冲突,甚至无法正常工作。...在 ESLinter ,ESLinter 提供了控制 ESLint CLIEngine 实例、ESLint 配置接口以及使用 CLIEngine 应用该配置之后检查文件接口,CLIEngine

1.2K10

ESlint规范下编码真的这么难嘛?

ESlint规范附带了一些默认规则,并要求严格执行,否则将会报错 .那如何ESlint严格规范下,自由编码 为什么要使用 ---- 代码规范,是我们很多程序容易忽略。...很多公司为了规范程序代码,都要求程序必须在ESlint规范下,进行代码开发,甚至将此写入了面试要求。...我们怎么办 ---- 对于我们自由写代码惯了,怎么能受了在ESLint严格模式下进行代码开发,而且,还有一堆关于ESlint错误英文提示。...按照你原来方法写代码 2. eslint肯定会,提示错误,一个个解决错误,提升对于eslint规范要求记忆 3. 看不懂英文提示,怎么处理?...强制数组元素间出现换行 block-spacing 禁止或强制在代码块开括号前和闭括号后有空格 brace-style 强制在代码块中使用一致大括号风格 camelcase 强制使用骆驼拼写法命名约定

34710

深入浅出 Eslint,告别 Lint 恐惧症

所以 tsc 在处理 ts 语法转译后 ast 规则eslint 默认 espree 是完全不一致,所以我们需要通过 @typescript-eslint/parser 解析器解析我们代码...这些内置规则你可以在 eslint/node_modules/eslint/lib/rules/array-bracket-spacing.js 详细查看到: 但是在某些特定条件下,内置一些规则并不能满足我们代码检查...') 查找规则一致。...之后我们着重来看下校验单个规则如何编写: 在 EsLint 单个约定规则存在三个重要目录: docs 相关规则文档说明 lib 相关规则具体实现代码 tests 相关规则测试用例代码 我们着重来看下...简单来说,我们可以 create 方法返回对象定义 key 为对应 AST 节点类型,而当 Eslint 调用该 Plugin 处理我们代码时,如果匹配到对应节点类型就会进入对应函数处理。

1.8K20

ESLint 在中大型团队应用实践

场景支撑:如何实现对场景差异支持?如何保证不同场景间一致部分(例如 JavaScript 基础语法)规范一致性? 技术选型支撑:如何在支撑不同技术选型前提下,保证基础规则(例如缩进)一致性?...多场景统一 JavaScript 规范:该模块是整个方案核心,借助 ESLint 特性,通过分层分类结构设计,在保证基础规则一致同时,实现了对不同场景、技术选型支撑。...ESLint 能力更像一个引擎,通过提供基础检测能力和模式约束,推动代码检测流程运转。原始代码经过解析器解析,在管道逐一经过所有规则检查,最终检测出所有不符合规范代码,并输出为报告。...在美团,我们使用自主开发 CI 系统,并在独立部署 Sonar 系统上定制化实现了相应规则,基本可以满足诉求,这里就不再赘述。...---------- END ---------- 今日互动:吐槽下你们见过奇葩ESLint规则吧 文章转载自公众号 美团技术团队 , 作者 宋鹏

1.2K31

Eslint团队终于妥协了...

举个例子(来自为什么我不使用 Prettier例子),Prettier通过printWidth属性配置「一行可以显示字符数」,超过就会折行。...基于上述原因,出现了两种解决方案: 方案1 Eslint与Prettier配合使用 其中Eslint负责代码质量、错误检查,Prettier负责代码风格检查。优点是能够满足代码质量、风格检查。...但今时今日,Eslint早已成为JS领域「代码检查器」老大,不需要再为了市场份额努力满足社区一切需要。况且,有些时候,考虑「规则冲突」以及「一致性」,有些需求甚至无法满足。...但对于越来越多规则,这很难做到。 一致性问题 ESLint规则之间是无法互相访问。这意味着我们会遇到无法正确修复错误问题,因为信息可能位于另一个规则。...试想一下,核心团队花费大力气解决问题(规则冲突、一致性问题),推出新「代码风格规则」,开发者会感谢Eslint核心团队付出么?

30720

ESLint 开始,说透我如何在团队项目中基于 Vue 做代码校验

为什么要使用它?如何ESLint 配合使用? EditorConfig 又是什么?如何使用?...如何在 VSCode 通过插件协助代码校验工作; 如何保证 push 到远程仓库代码是符合规范; 下面开始阅读吧,如果你对 ESLint 比较熟悉,可以直接跳过这个部分。...由于这些在不同环境之间可能会有很大差异,并且在运行时会进行修改,因此 ESLint 不会假设你执行环境存在哪些全局变量。 如果你想使用这些全局变量,那就可以通过 globals 指定。...规则校验说明,有 3 个报错等级 off 或 0:关闭对该规则校验; warn 或 1:启用规则,不满足时抛出警告,且不会退出编译进程; error 或 2:启用规则,不满足时抛出错误,且会退出编译进程...但是如果把 ESLint 和 Prettier 结合起来一起使用的话,就可能会出现规则冲突了,毕竟它们两者都会对风格进行处理,所以这个时候就可以通过 eslint-config-prettier 这个扩展把冲突规则进行关闭

2.3K20

从0到1开发一个简单 eslint 插件

前言:eslint我们常应用在代码静态扫描,通过设定eslint语法规则对代码进行检查,通过规则约束代码风格,以此提高代码健壮性,避免因为代码不规范导致应用出现bug可能。...eslint配置,通常我们是使用.eslintrc.js配置eslint,或者也可以直接package.json定义eslintConfig属性 上图?...使用es6特征支持,就可以通过修改parserOptions"ecmaVersion": 6 1.3 rules rules就是eslint规则,你可以在rules配置根据在不同场景、不同规范下添加自定义规则详情可参考之前...parser, parserOptions 和 plugins 等信息配置,但其实这两个配置最终实现结果是一致,这是因为配置二定义extends:plugin:@typescript-eslint...判断是否为console, 同时也可以利用其property属性判断是console哪种方法,比如log、info等 so~ 我们开始造玩具,我们通过在 create 返回对象,定义一个 CallExpression

1.1K20

自定义 ESLint 规则,让代码持续美丽

ESLint 原理 ESLint 是一个代码检查工具,通过静态分析,寻找有问题模式或者代码。...image 如何使用自定义规则 使用自定义 ESLint 规则,你需要自定义一个 ESLint 插件,然后将规则写到自定义 ESLint 插件,然后在业务代码添加 ESLint 配置,引入 ESLint...image 实际应用案例 函数、方法入参个数控制,其实已经在 ESLint 规则中了。在业务场景,我们需要对我们业务规则编写自定义 ESLint 规则。...更多应用场景 除了上面说硬编码场景,还可以将沉淀出最佳实践和业务规范通过自定义 ESLint 方式提示开发者,这对于多人协助、代码维护、代码风格一致性都会有很大帮助。...,单位元两边括号要用英文括号,不能用中文括号,达到交互展示统一效果 代码不能使用 OSS 地址静态资源路径,应该使用 CDN 地址资源路径 ...

79930

自定义 ESLint 规则,让代码持续美丽

ESLint 原理 ESLint 是一个代码检查工具,通过静态分析,寻找有问题模式或者代码。...image 如何使用自定义规则 使用自定义 ESLint 规则,你需要自定义一个 ESLint 插件,然后将规则写到自定义 ESLint 插件,然后在业务代码添加 ESLint 配置,引入 ESLint...image 实际应用案例 函数、方法入参个数控制,其实已经在 ESLint 规则中了。在业务场景,我们需要对我们业务规则编写自定义 ESLint 规则。...更多应用场景 除了上面说硬编码场景,还可以将沉淀出最佳实践和业务规范通过自定义 ESLint 方式提示开发者,这对于多人协助、代码维护、代码风格一致性都会有很大帮助。...,单位元两边括号要用英文括号,不能用中文括号,达到交互展示统一效果 代码不能使用 OSS 地址静态资源路径,应该使用 CDN 地址资源路径 ...

92710

手摸手教你写个ESLint 插件以及了解ESLint运行原理

这篇文章目的是介绍如何创建一个ESLint插件和创建一个 ESLint rule,用以帮助我们更深入理解ESLint运行原理,并且在有必要时可以根据需求创建出一个完美满足自己需求Lint规则。...AST 选择器作用:使用代码通过选择器选中特定代码片段,然后再对代码进行静态分析。...上文ESLint原理第三部中提到:在深度遍历过程,生效每条规则都会对其中某一个或多个选择器进行监听,每当匹配到选择器,监听该选择器rule,都会触发对应回调。...create返回一个对象,对象属性设为选择器,ESLint会收集这些选择器,在AST遍历过程中会执行所有监听该选择器回调。...; 使用方法: 使用 extends继承插件配置, extends不止这种继承方式,即使你传入一个npm包,一个文件相对路径地址,eslint也能继承其中配置。

1.2K20

从 0 到 1 搭建一个企业级前端开发规范

jsx: 支持 JSX.参考文档 include:编译器需要编译文件或者目录 添加 ESLint 代码规范校验 ESLint 可以帮助我们找出有问题编码模式或不符合规则代码 有关 ESLint 详细讨论可以查看这篇文章...相关规范 eslint-plugin-react-hooks:React hooks 代码规范校验规则 rules-of-hooks: 用来检查 Hook 规则(不能 if/循环中使用 Hooks...解析器 使用plugin:react/recommended/plugin:@typescript-eslint/recommended作为基本规则集 添加了两个 React Hooks 规则,并取消了...关闭了explicit-module-boundary-types,Typescript ,必须明确指定函数返回值类型。...并且函数return后类型必须与指定类型一致 参考文档 下面是一个 "explicit-module-boundary-types" 规则栗子 // 会出现 explicit-module-boundary-types

2.8K20

使用ESLint & Prettier美化Vue代码

Prettier 是一个有见识代码格式化工具。它通过解析代码并使用自己规则重新打印它,并考虑最大行长强制执行一致样式,并在必要时包装代码。...等语言,您可以结合 ESLint 和 Prettier,检测代码潜在问题同时,还能统一团队代码风格,从而促使写出高质量代码,提升工作效率。...本文就如何使用 ESLint & Prettier,格式并美化 Vue 代码做下探讨;如果您使用其他类型框架,这份经验绝大部份依旧适用。...得工作原理,它会对比格式化前和用 Prettier 格式化后代码,有不一致地方就会报错提示;我们可以借助一些工具修复,比如: eslint --fix,prettier-eslint-cli;可将其配置在...;eslint-config-prettier 即为解决此问题存在,可以使用它关闭所有可能引起冲突规则

3.4K71
领券