ESLint 近期动态大全,新版本正式发布,antfu 大佬推荐的插件也更新了!

👇 今日要闻

打破信息壁垒,走近全球前端。Hello 大家好,我是林语冰。

ESLint 生态近期有不少变动,我汇总了官方版本升级和 ESLint 插件的核心内容,包括:

  • ESLint 团队官宣 v10.5 次版本正式发布
  • antfu 大佬推荐的插件更新到了 v67 主版本
  • 社区奇葩的函数式编程插件极端且抽象

👉 ESLint 10.5 官宣

ESLint 团队官宣 v10.5 次版本正式发布,更新了几个补丁功能。

以前,max-depth 规则在计算条件分支的嵌套深度时有点猪头。

举个栗子,当 max-depth 的最大值配置为 1 时,ESLint 无法完美规避 if 语句嵌套导致的"条件地狱":

这里,当代码进入 d 的条件分支时,if 语句已经嵌套了两层,即使设置了嵌套深度最大值为 1,这种特殊情况下 ESLint 也不会报警。

ESLint 10.5 修正了这个 bug,现在当 if 语句的嵌套深度不满足 max-depth 配置时,ESLint 能够精准识别。

另一个 bug 也类似,max-nested-callbacks 规则在计算回调函数的嵌套深度时有点麻瓜。

举个栗子,当 max-nested-callbacks 的最大值配置为 2 时,ESLint 无法完美规避函数嵌套导致的"回调地狱":

以前,ESLint 在计算函数的嵌套深度时不准确,所以不会触发 max-nested-callbacks 规则报警。

ESLint 10.5 也修正了这个 bug,现在当嵌套函数滋生"回调套娃"时,ESLint 会先判断当前函数是否位于回调函数栈顶,精准识别问题并报警。

此外,ESLint 团队还改善了规则报错的显示范围:

  • no-with 规则报错时,红色波浪线不再高亮整个 with 语句
  • max-statements 规则报错时,红色波浪线不再高亮整个函数体
  • max-lines-per-function 规则报错时,红色波浪线不再高亮整个函数体

可以看到,现在 UI 的报错提示不会一大片一大片的飘红,而只在关键地方高亮。这样,程序员能快速定位是哪个规则导致的问题,明显改善了开发体验。

👉 ESLint 插件更新

eslint-plugin-unicorn 是流行的 ESLint 社区插件,它额外成功了 200+ 条代码质保规则。

这个插件被"Vitest 之父 "兼"UnoCSS 之父 " antfu 大佬采用,最近发布了第 67 个主版本。

新版本更新了大量规则,举个栗子,今年 JS 的最新功能 TemporalDate 的替代品,它完美规避了 Date 的设计屎山,彻底解决了 Date 的历史包袱。

eslint-plugin-unicorn 支持 prefer-temporal 规则,优先使用 Temporal 替代 Date

这里,Date 的月份索引类似于数组,从 0 开始算起,所以没有 12 月份,比较反直觉。Temporal 则采用符合自然规律的 API,开发者可以更直观地使用日期和时间。

这个社区插件大多数规则适用于 JS 和 TS,少部分规则还涉及 CSS、HTML、JSON 和 Markdown 的代码质检。

举个栗子,prefer-https 规则要求优先使用 HTTPS 而非 HTTP:

可以看到,prefer-https 规则要求优先使用 HTTPS,这样可以避免通过不安全的协议向公共资源发送 URL。

此外,某些特殊情况下该规则允许你使用 HTTP,比如:

eslint-plugin-unicorn 社区插件还有大量超夯的规则,大家可以把它集成到自己的 ESLint 配置中。

👉 函数式编程插件

eslint-plugin-functional 是一个 ESLint 社区插件,用于禁用 JS 和 TS 中的可变操作,并促进函数式编程。

这个插件比较极端且抽象,新手不友好,但熟悉函数式编程的小伙伴可以关注一下,它最近更新了第 10 个主版本。

举个栗子,在函数式编程中,变量 不应该是 可变 的:

这个插件的 no-let 规则可以和 ESLint 内置规则 no-var 结合使用,禁用 varlet 声明变量,强制所有变量声明为 const

同理,它也排斥其他编程范式,比如面向对象编程:

这个插件的 no-classes 规则禁止 class 声明类,当你采用面向对象等其他非函数式编程范式时,就会直接报错。

这个插件的极端之处在于,它不像 ESLint 那样可以灵活配置 const 优先的风格,而只允许使用 const;它也不允许 JS 发挥混合编程范式的优势,只允许拥抱函数式编程风格。

这个插件只适用于采用部分规则,或者当你刚开始接触函数式编程时,用来培养"代码洁癖"。总之,这个插件和 JS 生态格格不入,毕竟 JS 不是纯粹的函数式编程语言。

👇 重点总结

今天我们汇总了 ESLint 近期的动态大全,包括:

  • ESLint 10.5 正式发布,更新了补丁功能,改良了报错提示
  • eslint-plugin-unicorn 插件发布了 v67 主版本,新规则对齐了 JS 生态,推荐使用
  • eslint-plugin-function 插件发布了 v10 主版本,比较极端且抽象,新人慎用

👍 以上就是本期《前端日报》的全部内容了,如果读完对你有所帮助,可以按赞打卡、在看推荐或转发分享。

🙏 已经关注我的粉丝们,我们下期再见啦,掰掰~~

👇 参考文献:

相关推荐
只会cv的前端攻城狮1 小时前
DSL 领域模型架构设计:消灭 CRUD 重复工作
前端·架构
码事漫谈2 小时前
时序数据库2026盘点:国产数据库如何以“融合多模”走出差异化之路?
前端·后端
道友可好2 小时前
让 AI 自己验收,等于让学生自己批卷
前端·人工智能·后端
yingyima2 小时前
Go 语言正则表达式速查手册:30 分钟掌握核心语法与实战技巧
前端
大蝴蝶博努奇a2 小时前
使用ChatGPT 解决各类代码报错
前端
胡志辉3 小时前
深入浅出 call、apply、bind
前端·javascript·后端
iccb10133 小时前
5年,一个程序员是如何把私有化在线客服系统做到第一名的
前端·后端·github
假如让我当三天老蒯3 小时前
回归基本功:Map/Set 与 WeakMap/WeakSet 的区别
前端·面试
IT乐手3 小时前
48队都装不下你|国足第24次让全世界失望
前端