Skip to content

Commit 1dbebf4

Browse files
hardfistCopilotchenjiahan
authored andcommitted
chore: improve readme (#155)
Co-authored-by: Copilot <[email protected]> Co-authored-by: neverland <[email protected]>
1 parent 332a523 commit 1dbebf4

File tree

1 file changed

+32
-26
lines changed

1 file changed

+32
-26
lines changed

README.md

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
# ✨ Rslint ✨
2-
3-
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.
1+
# Rslint
42

53
<p>
64
<a href="https://discord.gg/YtTedhuq7N"><img src="https://img.shields.io/badge/chat-discord-blue?style=flat-square&logo=discord&colorA=564341&colorB=EDED91" alt="discord channel" /></a>
@@ -10,28 +8,34 @@ Rslint aims to be a drop-in replacement for ESLint and TypeScript-ESLint, just a
108
</p>
119

1210
> [!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
1416

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
1627

1728
> [!NOTE]
18-
> Rslint is more like a TypeScript extension than an ESLint plugin — think of it as Rust Clippy for JavaScript.
19-
>
2029
> Rslint is currently in an experimental phase but is under active development.
2130
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)).
2332

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
3134

32-
### Non-Goals
35+
> [!NOTE]
36+
> Documentation and installation guides are coming soon. Rslint is currently in active development.
3337
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.
3539

3640
## 🦀 Rstack
3741

@@ -49,26 +53,28 @@ Rstack is a unified JavaScript toolchain built around Rspack, with high performa
4953

5054
## 🤝 Contribution
5155

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
5459

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.
5661

57-
### Code of conduct
62+
## 💬 Community
5863

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.
6065

6166
## 🙏 Credits
6267

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:
6469

6570
- [@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.
6671
- [@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.
6873
- 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-
7074
- 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.
7177

7278
## 📖 License
7379

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

Comments
 (0)