如果我们在开发者写代码的时候就及时给到提示和建议,那开发体验就很棒了,而 ESLint 的自定义规则就可以实现在开发过程中给开发同学友好的提示。 自定义 ESLint 规则开发 怎么自定义 语法树分析 对目标代码进行语法树解析,可使用 astexplorer (https://astexplorer.net/) ? image 如何使用自定义规则 使用自定义的 ESLint 规则,你需要自定义一个 ESLint 的插件,然后将规则写到自定义的 ESLint 插件中,然后在业务代码中添加 ESLint 配置,引入 ESLint 插件的名称,命名规则:带前缀 eslint-plugin- ? image 实际应用案例 函数、方法的入参个数控制,其实已经在 ESLint 的规则中了。在业务场景中,我们需要对我们的业务规则编写自定义的 ESLint 规则。
如果我们在开发者写代码的时候就及时给到提示和建议,那开发体验就很棒了,而 ESLint 的自定义规则就可以实现在开发过程中给开发同学友好的提示。 自定义 ESLint 规则开发 怎么自定义 语法树分析 对目标代码进行语法树解析,可使用 astexplorer (https://astexplorer.net/) ? image 如何使用自定义规则 使用自定义的 ESLint 规则,你需要自定义一个 ESLint 的插件,然后将规则写到自定义的 ESLint 插件中,然后在业务代码中添加 ESLint 配置,引入 ESLint 插件的名称,命名规则:带前缀 eslint-plugin- ? image 实际应用案例 函数、方法的入参个数控制,其实已经在 ESLint 的规则中了。在业务场景中,我们需要对我们的业务规则编写自定义的 ESLint 规则。
feflow官方经过调研和探索,终于迎来了ESLint的解决方案,最核心的理念是:基于eslint:recommend做规则的定制化。 规则定义准则 不重复造轮子,基于eslint:recommend配置并改进 能够帮助发现代码错误的规则,全部开启 目的是团队的代码风格统一,而不是限制开发体验 eslint-config-ivweb 仓库地址:https://github.com/feflow/eslint-config-ivweb 欢迎提交issue或者PR一起参与团队规则维护 部分规则说明 [1507707269511_5625 :recommended提到的规则在ivweb中没有提到,因此最好配合eslint:recommend一起使用。 A: airbnb官方的规则过于庞大,有10多个规则文件。维护起来成本较高,选择基于轻量级的 eslint:recommend 基础之上定制团队ESLint规则更加简单,也便于维护。
'error' : 'off', /* 0 或’off’: 关闭规则。 1 或’warn’: 打开规则,并且作为一个警告,字体颜色为黄色(并不会导致检查不通过)。 2 或’error’:打开规则,并且作为一个错误 ,色体颜色为红色(退出码为1,检查不通过)。 */ // 以下为该项目自定义部分 'indent': [2, 4], //缩进风格 - 开启缩进4格 'no-spaced-func': 2, //函数调用时 函数名与()之间不能有空格 ": [规则值, 规则配置] } rules:开启规则和发生错误时报告的等级,规则的错误等级有以下三种: 0 或’off’: 关闭规则。 1 或’warn’: 打开规则,并且作为一个警告,字体颜色为黄色(并不会导致检查不通过)。 2 或’error’:打开规则,并且作为一个错误 ,色体颜色为红色(退出码为1,检查不通过)。
2,//禁止无效的正则表达式 "no-invalid-this": 2,//禁止无效的this,只能用在构造器,类,对象字面量 "no-irregular-whitespace": 2,//不能有不规则的空格
react-hooks-exhaustive-deps[1] 作者:Borislav Hadzhiev[2] 正文从这开始~ 起因 当我们在effect钩子中缺少依赖时,react-hooks/exhaustive-deps规则会警告我们 要摆脱这个警告,可以把函数或变量声明移到useEffect钩子里面,把每次渲染都会变化的数组和对象记忆存储,或者禁用这个规则。 下面是一个如何引起警告的例子。 禁用 绕过 "React Hook useEffect has a missing dependency"的警告的一个方法是禁用单行或整个文件的eslint规则。 'Hamburg'}; useEffect(() => { setAddress(obj); console.log('useEffect called'); // eslint-disable-next-line
eslint 规则连接:https://eslint.org/docs/rules/radix 原文规则错误描述解读 在我们使用parseInt 的时候,应该设置第二个参数据,而不能不写使用默认。
下面详细介绍一下: ESLint 由 JavaScript 红宝书 作者 Nicholas C. Zakas 编写, 2013 年发布第一个版本。 ESLint 主要有以下特点: 默认规则包含所有 JSLint、JSHint 中存在的规则,易迁移; 规则可配置性高:可设置「警告」、「错误」两个 error 等级,或者直接禁用; 包含代码风格检测的规则 (可以丢掉 JSCS 了); 支持插件扩展、自定义规则。 还有一种万能方法,就是在报错的JS文件中第一行写上 /* eslint-disable */ 如下图 这样就可以和Eslint携手并进了 配置(我主要用第三种方法,为了方便查看,特记录如下:) 可以通过以下三种方式配置 ESLint: 1.
在用vue2.0写项目时,由于vue-cli脚 架自动带了带了代码规范监测,稍微不小心就会出现一些Warning,这时就需要,根据自己习惯的代码规范,用一下代码进行对Eslint规范的一些忽略。 下面详细介绍一下: ESLint 由 JavaScript 红宝书 作者 Nicholas C. Zakas 编写, 2013 年发布第一个版本。 ESLint 主要有以下特点: 默认规则包含所有 JSLint、JSHint 中存在的规则,易迁移; 规则可配置性高:可设置「警告」、「错误」两个 error 等级,或者直接禁用; 包含代码风格检测的规则 (可以丢掉 JSCS 了); 支持插件扩展、自定义规则。 还有一种万能方法,就是在报错的JS文件中第一行写上 /* eslint-disable */ 如下图 这样就可以和Eslint携手并进了 配置(我主要用第三种方法,为了方便查看,特记录如下:) 可以通过以下三种方式配置
举例:要屏蔽“Missing trailing comma”或“comma-dangle”警告,你可以使用ESLint的配置选项来设置规则。 下面是一些方法,你可以根据自己的需求选择其中一种(这里只是举例,其他警告处理方法相同) 方法1:在代码中添加注释来禁用规则 在你希望屏蔽警告的代码行的上方添加如下注释: // eslint-disable-next-line 方法2:在ESLint配置文件中修改规则 如果你希望在整个项目中禁用该规则,可以在ESLint的配置文件(如.eslintrc.js)中进行设置。 方法3:使用/* eslint-disable /和/ eslint-enable */注释块 如果你希望在一个代码块中禁用警告,你可以使用/* eslint-disable /和/ eslint-enable / 这样做将只在指定的代码块中禁用comma-dangle规则。
eslint配置和rule规则解释 ESLint 是一个ECMAScript/JavaScript 语法规则和代码风格的检查工具,它的目标是保证代码的一致性和避免错误。 :recommended,启用 ESLint 内置规则集 的一个子集。 /my-eslint-config.js" ], "rules": { "eqeqeq": "warn" } } eslint:all,启动所有 ESLint 内置规则,不推荐。 规则 ESLint 附带有大量的规则。你可以使用注释或配置文件修改你项目中要使用哪些规则。 改变一个规则设置,你必须设置规则 ID 等于这些值之一: "off"或0 -关闭规则 "warn" 或1 - 开启规则, 使用警告 程序不会退出 "error"或2 - 开启规则, 使用错误 程序退出
一、指定js文件不使用 ESLint 语法检查 1.整个文件范围内禁止规则出现警告 将/* eslint-disable */放置于文件最顶部 /* eslint-disable */ alert('foo '); 2.在文件中临时禁止规则出现警告 将需要忽略的代码块用注释包裹起来 /* eslint-disable */ alert('foo'); /* eslint-enable */ 3.对指定规则的启用或者禁用警告 no-alert, no-console */ 4.对指定行禁用规则警告 有两种形式 alert('foo'); // eslint-disable-line // eslint-disable-next-line alert('foo'); 4.在指定行上禁用指定的某个规则 alert('foo'); // eslint-disable-line no-alert // eslint-disable-next-line no-alert alert('foo'); 5.在某个特定的行上禁用多个规则 alert('foo'); // eslint-disable-line no-alert, quotes, semi
即使你最终没有在项目中使用这些规则,阅读它们的说明也会让你更好地理解异步代码,并提高你的开发技能。 ESLint异步代码规则 ESLint 默认提供以下规则。 Node.js 特定规则 以下规则是 esLint-plugin-node[1] 插件为 Node.js 提供的附加 ESLint 规则。 你可以使用 /* eslint-disable node/no-sync */ 在文件顶部禁用这一规则。 @typescript-eslint/await-thenable 该规则不允许等待非 Promise 的函数或值。 启用这些规则 我发布了一个 ESLint 配置包,你可以轻松将其添加到你的项目中。它分别导出了基本规则、Node.js 特定规则和 TypeScript 特定规则。
这个在我们后面自定义规则的时候非常重要。它的语法可以看官方文档[5]。 ESlint 的原理 在开始书写我们的规则,我们看看 ESlint 具体的实现是怎么做的(这里只说明单条的 Rule 是怎么书写的,整体的 ESlint 作用流程这里不展开)。 自定义 ESlint 插件 基于 `Yeoman generator`[8] (一个快速帮你搭建工程的脚手架工具),可以快速创建 ESLint plugin 项目。 npm i -g yo npm i -g generator-eslint // 创建一个plugin yo eslint:plugin // 创建一个规则 yo eslint:rule 我创建的目录结构如下 的基础原理以及如何自定义 Eslint 插件来解决对象数组排序的问题,除此之外,我们可能还有其他的场景可以进行尝试,欢迎大家参与讨论~ 参考 ESLint 工作原理探讨[9] 自定义 ESLint
简介 对于经常使用的eslint配置,我们可以通过自定义 eslint 配置包,实现配置的复用。 module.exports = { rules: { // 自定义规则 'indent':['error', 2] } } package.json { "name ": "eslint-config-vue", // 包名称必须以 eslint-config- 开头 "version": "0.0.1", "description": "eslint config 规则查找对应包地址: 本地node_modules -> 全局 node_modules // 当前配置包名 eslint-config-vue // 生成的 node_modules 目录结构 - node_modules / - eslint-config-vue - index.js - package.json @命名空间 通过命名空间根据npm规则查找对应包地址 // 当前配置包名 @micro/eslint-config-vue
ESLint 插件规则编写的正确打开方式1. '], rules: { // eslint规则覆盖 'semi': ['error', 'always'], // 0 off 1 warn 2 error 'quotes': ['error 从模板生成 cslint 插件和 no-var 规则在 eslint 配置中 extends = plugin + rule,插件开发分为插件和规则,eslint 官⽅提供了 Yeoman 脚⼿架来⽣成插件和规则模板 create .eslintrc.js# create lib/index.js# create README.md$ yo eslint:rule # 规则模版初始化# create docs/rules no-var 规则/** @type {import('eslint').Rule.RuleModule} */module.exports = { meta: { type: 'problem
在Vite项目中配置自定义ESLint规则,主要分为安装依赖、创建配置文件和(可选)集成到开发服务器三个核心步骤。 :['.vue'],},plugins:['vue','@typescript-eslint'],rules:{//在这里添加你的自定义规则'vue/multi-word-component-names ,//关闭基础规则,由TS插件接管'@typescript-eslint/no-unused-vars':['error'],//使用TS插件的规则},};关键点:rules对象就是你定义自定义规则的地方 你可以查阅ESLint官方规则文档、@typescript-eslint规则或eslint-plugin-vue规则来找到所有可用的规则。 通过以上三步,你就可以在Vite项目中成功配置并使用自定义的ESLint规则了。
前言 ESLint 在项目中已经是大家见惯不惯的存在,你可能很厌烦动不动跳出来的 ESLint 报错,也可能很享受经过统一校验的工工整整的代码,无论如何,我的意见是,在稍微正式点的项目中都要有 ESLint 的存在,无论是直接使用简单的 recommend 配置如 extends: ['eslint: recommend'],还是精心研究了一整套适用于自己的规则集,Lint 工具的最大帮助就是保持语法统一 如不允许未使用的变量、JSX/TSX 中使用简写的 true 属性(<Comp shouldDisplay /> 而不是 <Comp shouldDisplay={true} />)等、还有一点值得一提,ESLint 本文来自于我在所在团队(淘宝店铺)内部制定、落地、推广 ESLint 规则集的收获,将会简要的介绍一批我认为在 TypeScript 分享中非常有必要的规则,通过这篇文章,你会了解到在制定规则时我们考虑的是什么 另外,淘系技术部前端架构团队正在淘系内推广 AppLint,准备将 ESLint 推广到整个淘系前端作为 CI/CD 的卡口之一,欢迎集团的同学了解并试用。
ESLint 插件规则编写的正确打开方式 1. '], rules: { // eslint规则覆盖 'semi': ['error', 'always'], // 0 off 1 warn 2 error 'quotes': [ 从模板生成 cslint 插件和 no-var 规则 在 eslint 配置中 extends = plugin + rule,插件开发分为插件和规则,eslint 官⽅提供了 Yeoman 脚⼿架来⽣ 成插件和规则模板 $ npm install yo generator-eslint -g $ yo eslint:plugin # 插件模板初始化,插件ID填写 cslint # create package.json # create .eslintrc.js # create lib/index.js # create README.md $ yo eslint:rule # 规则模版初始化 # create
本篇介绍了如何使用java来进行SonarQube的自定义规则插件的开发 基本上就是直接翻译Writing Custom Java Rules 101这个SonarQube的官方Readme内容 建议具有一定 /src/main: 这个路径主要放规则插件的规则逻辑代码 ./src/test: 由于本次规则插件是基于TDD(测试驱动开发)进行开发,这个目录放置针对. 规则代码:文件路径/src/main/java下的org.sonar.samples.java.checks包,建立一个文件名为MyFirstCustomCheck.java,这个就是写入本次规则插件的主要代码 visitNode():AST算法会把代码中的单词和符号进行归类排序成为树状,每个树枝都是一个Node,本次规则是针对函数的规则,所以就需要找Method类,接下来根据代码就能够理解内容了。 5、这样主要的规则代码就完成。