Rspack 推出 Rslint:一个用 Go 编写的 TypeScript-First Linter

本篇依然来自于我们的 《前端周刊》 项目!

由团队成员 掘金安东尼 翻译,欢迎大家 进群 持续追踪全球最新前端资讯!!

原文地址:socket.dev/blog/rspack...

Rspack 正式发布了 Rslint ------ 一个基于 typescript-go 构建的高速 TypeScript-first(以 TypeScript 为核心)Linter。这让 Rspack 加入了越来越多"工具链自带 Linter"的浪潮中。

和 Rspack 的 Rust 打包器不同,Rslint 完全用 Go 编写,并依赖微软的实验性编译器 typescript-go 。它最初是 @auvred 开发的 tsgolint(早期概念验证项目)的一个分支,如今被纳入 Rspack 的高性能工具链版图,作为新成员继续发展。

这意味着 Rstack 家族已经不再只是 Rust 打包器 Rspack,而是扩展到了代码检查与分析领域。Rspack 团队押注于 Go 和 typescript-go,来作为类型化 Linting 的核心基础。

特性与目标

Rslint 的 README 鼓励开发者把它理解为"TypeScript 版的 Rust Clippy",更像是一种 TypeScript 原生扩展,而不是传统 ESLint 插件。

它的目标是解决 ESLint 生态中长期存在的痛点:

  • 20--40 倍性能提升:依靠 Go 和 typescript-go,实现远超传统 ESLint 的速度。
  • 默认类型检查:无需复杂配置,就能直接进行基于类型的 Lint。
  • 兼容 ESLint 迁移:尽可能复用现有 ESLint 和 TypeScript-ESLint 配置,降低迁移成本。
  • TypeScript-first 语义:以 TypeScript 编译器作为唯一可信来源,避免边界条件下的不一致。
  • 跨模块分析:不再局限于单文件规则,而是支持项目级别的检查。
  • Monorepo 支持:通过 TypeScript 项目引用和 workspace 配置适配大仓。
  • 开箱即用:内置 TypeScript-ESLint 和常见 ESLint 规则,安装即用。
  • 可扩展性:开放 AST 和类型信息,支持深度语义分析的自定义规则。

目前,Rslint 仍处于实验阶段,但 Rstack 团队的野心远不止"又一个 ESLint 替代品"。

两条并行的"类型化 Linting"路径

有趣的是,Rslint 的发布几乎与 Oxlint 的类型感知 Linting 预览同步。Oxlint 也基于 typescript-go,但通过一个精简后的 tsgolint 分支来实现。

这意味着长期被认为"太慢"的类型化 Linting,现在逐渐进入了可行的落地阶段。

  • Rslint(Go + typescript-go) :直接继承 tsgolint 原型,目标是 TypeScript-first + ESLint 兼容 ,同时带来 20--40 倍性能提升
  • Oxlint(Rust + Oxc + typescript-go) :核心用 Rust 编写,但调用内置的 tsgolint 进行类型检查。这种混合模式允许 Oxlint 添加类型化规则(如 no-floating-promises),同时保留其 Rust CLI 和诊断体系。

两者都押注 typescript-go 能成长为高性能的类型分析基础,但区别在于:

  • Rslint 直接把它作为唯一的语义来源;
  • Oxlint 则把它嵌入到 Rust 工具链中。

这并不是"融合",而是 分化与专精:一条路径把类型化 Linting 当作 Go 版 TypeScript 编译器的自然扩展;另一条路径则当作 Rust 工具链的功能插件。

为什么突然冒出这么多新 Linter?

很多开发者会疑惑:为什么不整合到一个统一方案,而是不断造新 Linter?

原因其实有几点:

  • 架构差异:虽然都基于 typescript-go,Rslint 把它当核心,Oxlint 则是嵌入 Rust 管道。
  • 生态对齐:Rstack 更追求 TypeScript 原生的体验;Oxc 则坚持 Rust 工具链的一致性。
  • 演化路径不同:Rspack 选择"复活 tsgolint",走得更快;Oxc 则选择精简和内嵌,更贴合自身目标。

归根结底,每个工具链都想要端到端的一致性,而不是依赖其他生态的优先级。

工具链割裂下的 Linting

目前的趋势不是统一,而是 碎片化:每个高性能工具链都在自建自己的 Linter、Formatter、Bundler 和测试框架。

它们追求的是:

  • 更快的速度
  • 更紧密的集成
  • 更一致的开发者体验

类型化 Linting 只是最新的试验场。

对开发者来说,这种分化带来的是:更多针对性工具,但也意味着 更少的标准化。过去"用 ESLint 就行"的共识正在被打破,未来你选择哪个 Linter,很可能取决于你采用了哪条工具链。


👉 总结一句话:Rslint 的出现,标志着 TypeScript 生态进入"高速类型化 Linting"时代,但也揭示了工具链割裂带来的新选择与新困惑。

相关推荐
1024小神16 分钟前
使用tauri打包cocos小游戏,并在抖音小玩法中启动,拿到启动参数token
前端
用户游民24 分钟前
Flutter Android 端启动加载流程剖析
前端
林太白34 分钟前
项目中的层级模块到底如何做接口
前端·后端·node.js
lichenyang45337 分钟前
理解虚拟 DOM:前端开发中的高效渲染利器
前端
没烦恼3011 小时前
登录表单提交:按钮点击事件 vs form submit事件,该如何选择?
javascript
xiguolangzi1 小时前
vue3 字体管理
前端
伍华聪1 小时前
基于Vant4+Vue3+TypeScript的H5移动前端
前端
Nayana1 小时前
axios-取消重复请求--CancelToken&AbortController
前端·axios