Rslint Banner # Rslint

discord channel npm version downloads license CodSpeed

Rslint is a high-performance, ESLint-compatible linter for JavaScript and TypeScript. Powered by [typescript-go](https://github.com/microsoft/typescript-go), it delivers a faster drop-in experience with type-aware rules and optional type checking in the same run. ## ✨ Goals - 🚀 **Lightning Fast**: Powered by 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. ## ✅ Current Status > [!NOTE] > Rslint is currently in an experimental phase but is under active development. Rslint is a fork of [tsgolint](https://github.com/typescript-eslint/tsgolint), building upon the innovative proof-of-concept work by [@auvred](https://github.com/auvred). We decided to continue development as tsgolint has no current plans for continued development ([reference](https://x.com/bradzacher/status/1943475629376282998)). ## 🚀 Getting Started See [Guide](https://rslint.rs/guide/). ## 📖 Architecture Overview - [Architecture Overview](./architecture.md) - Comprehensive system architecture and implementation details ## 🦀 Rstack Rslint is part of Rstack, the fast, unified JavaScript toolchain for developers and agents. | Name | Description | Version | | ----------------------------------------------------- | ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [Rspack](https://github.com/web-infra-dev/rspack) | Bundler | npm version | | [Rsbuild](https://github.com/web-infra-dev/rsbuild) | Build tool | npm version | | [Rslib](https://github.com/web-infra-dev/rslib) | Library development tool | npm version | | [Rspress](https://github.com/web-infra-dev/rspress) | Static site generator | npm version | | [Rsdoctor](https://github.com/web-infra-dev/rsdoctor) | Build analyzer | npm version | | [Rstest](https://github.com/web-infra-dev/rstest) | Testing framework | npm version | | [Rslint](https://github.com/web-infra-dev/rslint) | Linter | npm version | ## 🤝 Contribution Please read the [Contributing Guide](https://github.com/web-infra-dev/rslint/blob/main/CONTRIBUTING.md) and let's build Rslint together. ### Code of Conduct This repo has adopted the ByteDance Open Source Code of Conduct. Please check [Code of conduct](./CODE_OF_CONDUCT.md) for more details. ## 💬 Community Come chat with us on [Discord](https://discord.gg/uPSudkun2b)! Rslint team and users are active there, and we're always looking for contributions. ## 🙏 Credits Rslint has been inspired by several outstanding projects in the community: - [@auvred](https://github.com/auvred) - The original author of [tsgolint](https://github.com/typescript-eslint/tsgolint), from which Rslint is forked. We are deeply grateful for his pioneering work and innovative approach to TypeScript linting. - [@JamesHenry](https://github.com/JamesHenry) - The creator of [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint), who has provided valuable guidance and suggestions for Rslint's development. - [@JoshuaKGoldberg](https://github.com/JoshuaKGoldberg) - For his insightful blog series ["If I Wrote a Linter"](https://www.joshuakgoldberg.com/blog/if-i-wrote-a-linter-part-1-architecture/) which provided valuable architectural insights for modern linter design. - The [typescript-eslint](https://github.com/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](https://github.com/eslint/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](https://github.com/rust-lang/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](https://github.com/microsoft/typescript-go) project - Powers Rslint's high-performance TypeScript parsing and semantic analysis capabilities. ## 📖 License Rslint is [MIT licensed](https://github.com/web-infra-dev/rslint/blob/main/LICENSE).