彻底改变你的代码:JavaScript linter—Oxlint

京东云开发者
• 阅读 333

作为开发人员,总是在寻找能够简化工作流程并提高工作效率的工具。Oxlint 是一个用 Rust 编写的 JavaScript linter,现在提供了可以替代ESLint的新方案,其性能比ESLint提升了 50-100 倍。

在本文中,将学习如何将 Oxlint 集成到开发流程中,充分利用其速度和效率。

了解 Oxlint

Oxc (The Oxidation Compiler) 是一个用Rust 编写的JavaScript 和 TypeScript高性能工具集合。Oxc 正在构建一个解析器、linter、格式化程序、转译器、压缩器、解析器。

Oxlint 是一种静态代码分析工具,旨在通过检测错误和执行代码样式规则来提高代码质量。与用 JavaScript 编写的 ESLint 不同,Oxlint 是用 Rust 开发的,Rust 是一种以其性能和安全性而闻名的语言。这种核心技术的差异赋予了 Oxlint 显著的速度优势。

Oxlint 的主要特点

性能

处理代码的速度比 ESLint 快 50-100 倍,并且随着 CPU 核心的数量而扩展。

彻底改变你的代码:JavaScript linter—Oxlint

安全性

Rust 的内存安全保证消除了某些类别的错误。

兼容性

支持 .eslintignoreESLint comment disabling

适用于大多数为 ESLint 设计的配置和插件。

检查正确性的 Lint

Oxlint 默认识别错误、冗余或令人困惑的代码——优先考虑正确性而不是不必要的挑剔规则(分类为perfsuspiciouspedanticstyle),默认情况下禁用这些规则。

使用方便

oxlint 设计为开箱即用的零配置;甚至 Node.js 也不是必需的。大多数调整可以通过命令行进行,并且从 ESLint 配置文件读取当前正在进行中。

增强诊断​

理解 linter 消息可能具有挑战性。Oxlint 旨在通过查明根本原因并提供有用的消息来简化这一过程,从而无需阅读冗长的规则文档,从而节省宝贵的时间。

oxlint -D perf在vscode 存储库中运行

彻底改变你的代码:JavaScript linter—Oxlint

综合规则

Oxlint 尚未提供插件系统,但正在积极整合 TypeScript、React、Jest、Unicorn、JSX-a11y 和 Import 等流行插件的规则。并且也在研究基于 DSL 的插件系统。

Oxlint的安装与使用

在JavaScript / TypeScript代码库中测试 Oxlint,只需在存储库的根目录中执行以下命令:

npx oxlint@latest
# or
pnpm dlx oxlint@latest
# or
yarn dlx oxlint@latest
# or
bunx oxlint@latest
# or
deno run npm:oxlint@latest

或者将其保存到 package.json 中:

npm add -D oxlint
# or
pnpm add -D oxlint
# or
yarn add -D oxlint
# or
bun add -D oxlint

VSCode 扩展

Oxc 提供了 VCode 插件供开发者使用:下载官方VSCode 扩展

实际效果

在现实场景中,Shopify 报告称,他们的 75分钟 ESLint 运行现在只需 10 秒。

来自 Shopify DX 和 Preact 的创建者 Jason Miller 的:

oxlint 对我们 Shopify 来说是一个巨大的胜利。我们之前的 linting 设置需要 75 分钟才能运行,因此我们将其分散到 CI 中的 40 多名工作人员中。 相比之下,oxlint 在单个工作程序上检查相同代码库大约需要 10 秒,并且输出更容易解释。我们甚至发现了一些在迁移时被旧设置隐藏或跳过的错误!

来自Vue和vite创建者Evan You尤雨溪的使用体验:

在 Vue 3 代码库上运行 oxlint,约 200 条规则 + 约 590 个文件在 50 ms内完成,而再次运行更是只需30ms。

彻底改变你的代码:JavaScript linter—Oxlint

来自Moonrepo创建者Miles Johnson的使用体验:

彻底改变你的代码:JavaScript linter—Oxlint

实际思考

Oxlint是否会取代Eslint?

Oxlint官方负责人表明:

现阶段,oxlint 并不打算完全取代 ESLint;当 ESLint 的缓慢成为工作流程中的瓶颈时,它可以作为增强功能。

官方建议开发者在lint-staged或CI设置中先运行 Oxlint 再运行 ESLint。这样,大部分常见问题还没走到 Eslint 这一步就被 Oxlint 挡住了。

Oxlint 刚刚发布面市,其生态支持和功能的完备肯定不及市面上已经成熟的工具。必然需要一段时间才能达到插件/规则的同等水平。但是,Oxlint 的出现无疑给 JavaScript 和 TypeScript 的开发者们提供了一个新的选择。它的高效性和易用性对于一些特定场景下的需求来说,可能是一个不错的解决方案。

参考资料

https://oxc-project.github.io/

https://github.com/oxc-project/oxc

作者:京东保险 张洁

来源:京东云开发者社区 转载请注明来源

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
Vue 项目中 ESlint 配置
前言对于ESlint这一块一直存在一些疑问,今天看到一个文章内容挺好的,这里拿来了。一、eslint安装1、全局安装npmigeslint全局安装的好处是,在任何项目我们都可以使用eslint的全局命令进行代码规则操作,但是这对我们的意义并不大,后续会详细介绍;全局安装之后
企业级飞速低代码 | 这5个理由让软件架构师积极拥抱低代码
从避免技术债务到简化和整合业务流程到解锁单体系统,低代码提供了速度和灵活性。软件开发者和架构师曾经有理由对低代码技术持怀疑态度,但今天,许多成熟的低代码平台使敏捷开发团队能够提高生产力、增加质量、并频繁部署。开发人员使用低代码技术来构建应用程序、客户体验、门户网站、搜索体验、工作流集成、数据管道、数据流、仪表板、测试自动化、机器学习模型和其他解决方案。"低代
Stella981 Stella981
3年前
KubeFlow
Argo是一个开源原生容器工作流引擎用于在Kubernetes上开发和运行应用程序。ArgoWorkflow流程引擎,可以编排容器流程来执行业务逻辑,在20年4月8日进入CNCF孵化器组。而KubeFlow的Pipeline子项目,由Google开源,其全面依赖Argo作为底层实现,并增强持久层来补充流程管理能力,同时通过PythonSDK来简化流程
Stella981 Stella981
3年前
JavaScript优化技巧
作为开发人员,我们一直在寻找让我们的代码更快更好的方法。但在此之前,编写高性能代码需要做三件事:了解语言及其工作原理基于用例进行设计调试!修复!重复记住这一点任何傻瓜都可以编写计算机可以理解的代码,优秀的程序员编写人类可以理解的代码。丁·福勒我们来看看如何使JavaScript代码运行得更快。延迟
Easter79 Easter79
3年前
SublimeText3系列(2)
1.什么是linter?linter是用来检查代码是否符合规则的工具,例如检查Javascript代码的jshint工具,你可以设置其规则"eqeqeq":true,那么如果在你的代码文件中使用了而不是,那么检查的时候就会给出提示。2.什么是SublimeLinterSub
Wesley13 Wesley13
3年前
GitHub Actions入门
一、一些概念持续集成(Continuousintegration)频繁地向一个共享仓库提交少量代码变更的软件开发实践。使用GitHubActions,可以创建自定义的CI工作流,以自动构建并测试你的代码。从你的仓库中,你可以查看代码变更的状态和工作流中每个操作的详细日志。CI通过提供代码变更的及时反馈来更快地检
Stella981 Stella981
3年前
26种JavaScript优化技术
开发人员的生活总是在学习新事物。作为前端开发人员必须知道一些使我们的代码如何更优雅,工作更轻松的技巧。也许你已经进行了很长时间的JavaScript开发,但有时你可能没有使用不需要解决或编写一些额外代码即可解决问题的最新功能。这些技术可以帮助你编写干净且优化的JavaScript代码。1\.多个条件判断//lo
Wesley13 Wesley13
3年前
@JavaScript程序员,如何写出令人惊叹的高级代码?
△是新朋友吗?记得先点web前端学习圈关注我哦~!(https://oscimg.oschina.net/oscnet/332f31ec504043fa90fa06a0b296c308.jpg)各种包管理器到ESLint,从CommonJS到AMD,再从ES6模块到Babel和Webpack,好多工具啊!!(http
绣鸾 绣鸾
1年前
IntelliJ IDEA 2023.2.5 for Mac免登录
是一款功能强大的集成开发环境(IDE),为开发人员提供了许多特色功能,以下是其特色介绍:新增语言支持:IntelliJIDEA2023新增对多种编程语言的支持,包括Kotlin、TypeScript、Rust等。这使得开发人员可以在同一个IDE中同时开发不
liam liam
11个月前
Swagger annotations (注解):让API文档设计更高效
提供的注解集是其框架中定义API规范和文档的重要工具。这些注解在代码里标注重要部分,为Swagger的解析工作铺路,进而生成详尽的API文档。开发者编写的注释能够被转换成直观的文档,并展现API端点、参数和响应等信息。这不仅提升了开发人员对API运作的理解