JS Linter,2024年你最钟爱哪一款?

317 阅读5分钟

随着 Rust 在开发人员中越来越受欢迎,越来越多的前端工具链被改写或重构。当然,JS Linter 相关的工具也不例外!

2024 年是行业标准 ESLint 独占鳌头,还是 Deno Lint、Biome、quick-lint-js 或 Oxlint 将取代 ESLint?或者是尚未问世的 JS Linter 新产品夺得桂冠?

本文将对各个 JS Linter 做一个基本的介绍和对比,希望对不了解的同学有所帮助。在文章末尾将对 2024 年 JS Linter 的未来做一个预测。

ESLint

ESLint 封面.png

ESLint 是一个插件化的代码检测工具,它可以静态分析代码,快速发现问题。它内置在大多数文本编辑器中,您可以将 ESLint 作为 DevOps 的一部分来运行。

2023年09月23日,在 ESLint v8.50.0 版本发布时,ESLint 官推发布消息,计划在 v9.0.0 中放弃对 Node.js < 18 和 Node.js 19 的支持。

2024年04月05日,经过近半年的迭代,ESLint v9.0.0 正式发布,带来重大更新和破坏性修改,包括放弃对 Node.js < v18.18.0、v19 的支持、删除众多 formatter 插件、删除 valid-jsdoc 和 require-jsdoc 规则等特性。

Oxlint

Oxlint封面.png

Oxlint 是 Oxc 项目下的一款基于 Rust 编写的 Linter 工具,旨在捕获错误或无用的代码,默认情况下无需任何配置。Oxc(Oxidation Compiler) 正在为 JavaScript 和 TypeScript 创建一系列高性能工具,其正在构建一个解析器、linter、格式化程序、转换器、压缩器、解析器等,这些全部用 Rust 编写,性能表现优秀。

Oxlint 的速度比 ESLint 快 50-100 倍,并可随 CPU 内核数量(基准)扩展。它集成了来自 eslint、typescript、eslint-plugin-react、eslint-plugin-jest、eslint-plugin-unicorn 和 eslint-plugin-jsx-a11y 的200多条规则,可以支持 .eslintignore 和 ESLint 注释。同时,默认情况下可以检查 .vue、.astro 和 .svelte 文件中的 <script> 内容。

Biome

biome.png

Biome 是一个用于 Web 项目的高性能工具链,旨在为开发人员提供维护项目健康的工具。它的崛起与 Rome 的陨落有关。Rome 是一个雄心勃勃的项目,旨在统一工具链(编译、格式化、捆绑、测试),该项目背后的公司失败了,项目也于2023年停止。幸运的是,该项目被分叉,并以 Biome 的名称重新诞生。2023年11月,Biome 还赢得了 Prettier 挑战赛。

Biome 是 JavaScript、TypeScript、JSX 和 JSON 的快速格式化工具,与 Prettier 的兼容性高达 97%。它拥有来自 ESLint、typecript-eslint 和其他来源的 200 多条规则。它能输出详细的上下文诊断结果,帮助开发者改进代码,成为更好的程序员!

Biome 从一开始就是为在编辑器中交互使用而设计的。它可以在你编写畸形代码时对其进行格式化和剔除。

quick-lint-js

quick-lint-js.png

quick-lint-js 的速度比 ESLint 快 90 倍以上,它能在您编码时为您提供即时反馈。在手指离开键盘之前,就能发现 JavaScript 中的错误。无需配置即可检查任何 JavaScript 文件。

quick-lint-js 的目的是让初学者更容易学习 JavaScript(和 TypeScript)。2024年03月03日 v3.2.0 版本正式发布,其的生态配套还是不错的,感兴趣的同学可以通过 VSCode 插件、Vim 插件、CLI 等方式快速使用。

Deno Lint

deno.png

Deno 对 Node.js 世界进行了重新思考,做出了许多非常了不起的决定:内置捆绑程序、文档生成器、代码格式化工具,以及 🥁......deno_lint,一个用 Rust 🦾 制作的校验程序。

deno_lint 支持 ESLint 和 TypeScript 推荐的规则集。您可以在 nodejs 项目中使用 npm install @node-rs/deno-lint 试试。

总结与展望

Biome 于 2020 年 2 月启动。Deno Lint 和 quick-lint-js 均于 2020 年 3 月启动。RSLint(并入 Biome)于 2020 年 9 月启动。全球范围内的封锁(疫情三年)确实给了人们开始 ESLint 重写的时间。 最受欢迎的 ESLint、JSHint、Biome、Deno Lint 和 quick-lint-js 特性对比如下:

feature-diff.png

(图片来源:https://quick-lint-js.com/)

从上图可以看出 quick-lint-js 相比其他 JS Linter,有着快速、零配置、规则集更小等诸多优点。但是这个对比表格中没有加入 Oxlint,其速度也是相当的惊人。

简要汇总下不同 JS Linter 工具的优势:

  • ESLint:非常高的可扩展性,允许团队根据自己的需要调整代码库。
  • Oxlint:是ESLint 的工具替代者,安装和配置都非常简单。
  • Biome:是一款用于消除争执并使代码库保持一致的工具。
  • quick-lint-js:可让您在任何代码库中找到错误,而不会过于麻烦或复杂。
  • Deno Lint:是开发基于 Deno 的服务器和脚本的首选选项。

放眼未来,这些代码检查工具中的一些可能会融合。Biome 可能会采用“简易模式”,不再需要 quick-lint-js。Deno 可能会用预配置的ESLint 替代 Deno Lint。quick-lint-js 可能会添加插件和复杂的配置,并最终取代 ESLint。Oxlint 可能会使其他所有工具都过时!

参考资料:

  1. eslint.org/
  2. github.com/eslint/esli…
  3. oxc-project.github.io/docs/guide/…
  4. github.com/biomejs/bio…
  5. quick-lint-js.com/
  6. docs.deno.com/runtime/man…