You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Rslint aims to be a drop-in replacement for ESLint and TypeScript-ESLint, just as Rspack serves as a drop-in replacement for webpack and may integrated into Rspack in the future.
@@ -10,28 +8,34 @@ Rslint aims to be a drop-in replacement for ESLint and TypeScript-ESLint, just a
10
8
</p>
11
9
12
10
> [!NOTE]
13
-
> Rslint is a fork of [tsgolint](https://github.com/typescript-eslint/tsgolint), an experimental proof-of-concept typescript-go powered JS/TS linter. We would like to express our heartfelt gratitude to the tsgolint team, especially to [@auvred](https://github.com/auvred) for their pioneering work and innovative approach to TypeScript linting. We decided to fork tsgolint because it serves as a proof-of-concept with no current plans for continued development on this direction in the near term ([reference](https://x.com/bradzacher/status/1943475629376282998)).
11
+
> Think of Rslint as Rust Clippy but for TypeScript — more like a TypeScript extension than an ESLint plugin.
12
+
13
+
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.
14
+
15
+
## ✨ Goals
14
16
15
-
## Goals and Non-Goals
17
+
- 🚀 **Lightning Fast**: Built with Go and typescript-go, delivering 20-40x faster linting performance compared to traditional ESLint setups.
18
+
- ⚡ **Minimal Configuration**: Typed linting enabled by default with minimal setup required — no complex configuration needed.
19
+
- 📦 **Best Effort ESLint Compatible**: Compatible with most ESLint and TypeScript-ESLint configurations, significantly reducing migration costs.
20
+
- 🎯 **TypeScript First**: Uses TypeScript Compiler semantics as the single source of truth, ensuring 100% consistency and eliminating edge-case bugs.
21
+
- 🛠️ **Project-Level Analysis**: Performs cross-module analysis by default, enabling more powerful semantic analysis than file-level linting.
22
+
- 🏢 **Monorepo Ready**: First-class support for large-scale monorepos with TypeScript project references and workspace configurations.
23
+
- 📋 **Batteries Included**: Ships with all existing TypeScript-ESLint rules and widely-used ESLint rules out of the box.
24
+
- 🔧 **Extensible**: Exposes AST, type information, and global checker data for writing custom rules with complex cross-module analysis.
25
+
26
+
## ✅ Current Status
16
27
17
28
> [!NOTE]
18
-
> Rslint is more like a TypeScript extension than an ESLint plugin — think of it as Rust Clippy for JavaScript.
19
-
>
20
29
> Rslint is currently in an experimental phase but is under active development.
21
30
22
-
### Goals
31
+
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)).
23
32
24
-
-**Minimal Migration Cost**: Rslint aims to be highly compatible with ESLint and TypeScript-ESLint configurations, significantly reducing the cost of migration.
25
-
-**Typed Linting First**: We believe typed linting is essential for advanced semantic analysis. Rslint enables typed linting by default and aims to make it effortless to adopt — no complex setup required.
26
-
-**TypeScript Semantics as the Single Source of Truth**: While it’s possible to reimplement TypeScript’s semantics in another language, achieving 100% consistency is extremely difficult and often leads to subtle edge-case bugs—such as discrepancies in resolver behavior, symbol resolution, and project reference support. Rslint avoids these pitfalls by adopting tsgo's native TypeScript semantics for static analysis, ensuring full alignment and eliminating inconsistencies.
27
-
-**Project-Level Analysis First**: Unlike ESLint, which defaults to file-level analysis, Rslint performs project-level analysis by default (similar to Clippy). This enables more powerful cross-module analysis and better support for incremental linting.
28
-
-**First-Class Monorepo Support**: TypeScript already offers strong monorepo support. Rslint builds on this by following TypeScript’s best practices and the excellent design of typescript-eslint's [project service](https://typescript-eslint.io/blog/project-service) to provide robust support for large-scale monorepos.
29
-
-**Batteries Included**: Rslint will include all existing typescript-eslint rules as well as widely used ESLint rules out of the box.
30
-
-**Custom Rule Support**: Rslint will expose both the AST, typed information, and global checker data to rule authors, making it easy to write complex cross-module analysis and custom rules.
33
+
## 🚀 Getting Started
31
34
32
-
### Non-Goals
35
+
> [!NOTE]
36
+
> Documentation and installation guides are coming soon. Rslint is currently in active development.
33
37
34
-
-**Language Agnostic**: We don't plan to support non-TypeScript/JavaScript languages (e.g., CSS or HTML) in the near term — though we remain open to exploring this in the long term.
38
+
Stay tuned for our first stable release with comprehensive documentation and migration guides.
35
39
36
40
## 🦀 Rstack
37
41
@@ -49,26 +53,28 @@ Rstack is a unified JavaScript toolchain built around Rspack, with high performa
49
53
50
54
## 🤝 Contribution
51
55
52
-
> [!NOTE]
53
-
> We highly value any contributions to Rslint!
56
+
Please read the [Contributing Guide](https://github.com/web-infra-dev/rslint/blob/main/CONTRIBUTING.md) and let's build Rslint together.
57
+
58
+
### Code of Conduct
54
59
55
-
Please read the [Contributing Guide](https://github.com/web-infra-dev/rslint/blob/main/CONTRIBUTING.md).
60
+
This repo has adopted the ByteDance Open Source Code of Conduct. Please check [Code of conduct](./CODE_OF_CONDUCT.md) for more details.
56
61
57
-
### Code of conduct
62
+
##💬 Community
58
63
59
-
This repo has adopted the ByteDance open source code of conduct. Please check [Code of conduct](./CODE_OF_CONDUCT.md)for more details.
64
+
Come chat with us on [Discord](https://discord.gg/uPSudkun2b)! Rslint team and users are active there, and we're always looking for contributions.
60
65
61
66
## 🙏 Credits
62
67
63
-
Rslint has been inspired by several outstanding projects in the community. We would like to acknowledge and express our sincere gratitude to the following developers, teams and projects:
68
+
Rslint has been inspired by several outstanding projects in the community:
64
69
65
70
-[@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.
66
71
-[@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.
67
-
72
+
-[@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.
68
73
- 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.
69
-
70
74
- 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.
75
+
- 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.
76
+
- The [typescript-go](https://github.com/microsoft/typescript-go) project - Powers Rslint's high-performance TypeScript parsing and semantic analysis capabilities.
71
77
72
78
## 📖 License
73
79
74
-
Rslint is licensed under the [MIT License](https://github.com/web-infra-dev/rslint/blob/main/LICENSE).
80
+
Rslint is [MIT licensed](https://github.com/web-infra-dev/rslint/blob/main/LICENSE).
0 commit comments