Note
Think of Rslint as Rust Clippy but for TypeScript β more like a TypeScript extension than an ESLint plugin.
Rslint is a high-performance JavaScript and TypeScript linter written in Go. It offers strong compatibility with the ESLint and TypeScript-ESLint ecosystem, allowing for seamless replacement, and provides lightning-fast linting speeds.
- π Lightning Fast: Built with Go and typescript-go, delivering 20-40x faster linting performance compared to traditional ESLint setups.
- β‘ Minimal Configuration: Typed linting enabled by default with minimal setup required β no complex configuration needed.
- π¦ Best Effort ESLint Compatible: Compatible with most ESLint and TypeScript-ESLint configurations, significantly reducing migration costs.
- π― TypeScript First: Uses TypeScript Compiler semantics as the single source of truth, ensuring 100% consistency and eliminating edge-case bugs.
- π οΈ Project-Level Analysis: Performs cross-module analysis by default, enabling more powerful semantic analysis than file-level linting.
- π’ Monorepo Ready: First-class support for large-scale monorepos with TypeScript project references and workspace configurations.
- π Batteries Included: Ships with all existing TypeScript-ESLint rules and widely-used ESLint rules out of the box.
- π§ Extensible: Exposes AST, type information, and global checker data for writing custom rules with complex cross-module analysis.
Note
Rslint is currently in an experimental phase but is under active development.
Rslint is a fork of tsgolint, building upon the innovative proof-of-concept work by @auvred. We decided to continue development as tsgolint has no current plans for continued development (reference).
See Guide.
- Architecture Overview - Comprehensive system architecture and implementation details
Rstack is a unified JavaScript toolchain built around Rspack, with high performance and consistent architecture.
Name | Description | Version |
---|---|---|
Rspack | Bundler | |
Rsbuild | Build tool | |
Rslib | Library development tool | |
Rspress | Static site generator | |
Rsdoctor | Build analyzer | |
Rstest | Testing framework | |
Rslint | Linter |
Please read the Contributing Guide and let's build Rslint together.
This repo has adopted the ByteDance Open Source Code of Conduct. Please check Code of conduct for more details.
Come chat with us on Discord! Rslint team and users are active there, and we're always looking for contributions.
Rslint has been inspired by several outstanding projects in the community:
- @auvred - The original author of tsgolint, from which Rslint is forked. We are deeply grateful for his pioneering work and innovative approach to TypeScript linting.
- @JamesHenry - The creator of typescript-eslint, who has provided valuable guidance and suggestions for Rslint's development.
- @JoshuaKGoldberg - For his insightful blog series "If I Wrote a Linter" which provided valuable architectural insights for modern linter design.
- The typescript-eslint team - Rslint's configuration design and test cases have been significantly influenced by and adapted from typescript-eslint's excellent implementation.
- The ESLint team - Rslint builds upon the foundational work of ESLint, the pioneering JavaScript linter that established the standards and patterns for static code analysis in the JavaScript ecosystem.
- The Rust Clippy team - Rslint draws inspiration from Clippy's approach to compiler-integrated linting, bringing similar TypeScript-native analysis to the JavaScript ecosystem.
- The typescript-go project - Powers Rslint's high-performance TypeScript parsing and semantic analysis capabilities.
Rslint is MIT licensed.