rslint

module
v0.5.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 7, 2026 License: MIT

README ΒΆ

Rslint Banner

Rslint

discord channel npm version downloads license CodSpeed

[!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.

✨ Goals

  • πŸš€ 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.

βœ… Current Status

[!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).

πŸš€ Getting Started

See Guide.

πŸ“– Architecture Overview

πŸ¦€ Rstack

Rstack is a unified JavaScript toolchain built around Rspack, with high performance and consistent architecture.

Name Description Version
Rspack Bundler npm version
Rsbuild Build tool npm version
Rslib Library development tool npm version
Rspress Static site generator npm version
Rsdoctor Build analyzer npm version
Rstest Testing framework npm version
Rslint Linter npm version

🀝 Contribution

Please read the Contributing Guide 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 for more details.

πŸ’¬ Community

Come chat with us on Discord! 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 - 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.

πŸ“– License

Rslint is MIT licensed.

Directories ΒΆ

Path Synopsis
cmd
rslint command
modified based on https://github.com/microsoft/typescript-go/blob/cedc0cbe6c188f9bfe6a51af00c79be48c9ab74d/cmd/tsgo/lsp.go#L1
modified based on https://github.com/microsoft/typescript-go/blob/cedc0cbe6c188f9bfe6a51af00c79be48c9ab74d/cmd/tsgo/lsp.go#L1
tsgo command
internal
api
Package ipc provides IPC communication between JS and Go using stdio
Package ipc provides IPC communication between JS and Go using stdio
inspector
Package inspector provides code inspection types and builders for the Playground
Package inspector provides code inspection types and builders for the Playground
ls
lsp
modified based on https://github.com/microsoft/typescript-go/blob/cedc0cbe6c188f9bfe6a51af00c79be48c9ab74d/internal/lsp/server.go#L1
modified based on https://github.com/microsoft/typescript-go/blob/cedc0cbe6c188f9bfe6a51af00c79be48c9ab74d/internal/lsp/server.go#L1
plugins/react/rules/no_unknown_property
cspell:disable β€” this file enumerates HTML / SVG / ARIA attribute names verbatim from React and the WHATWG / W3C specs, so it contains many attribute-name tokens (aria-*, SVG presentation attributes, popover / shadowroot attrs, …) that are not in a general English dictionary.
cspell:disable β€” this file enumerates HTML / SVG / ARIA attribute names verbatim from React and the WHATWG / W3C specs, so it contains many attribute-name tokens (aria-*, SVG presentation attributes, popover / shadowroot attrs, …) that are not in a general English dictionary.
plugins/react_hooks/react_hooksutil
Package react_hooksutil holds the AST helpers shared by every rule in the `eslint-plugin-react-hooks` port.
Package react_hooksutil holds the AST helpers shared by every rule in the `eslint-plugin-react-hooks` port.
plugins/react_hooks/rules/exhaustive_deps
Package exhaustive_deps implements the rslint port of upstream `react-hooks/exhaustive-deps`.
Package exhaustive_deps implements the rslint port of upstream `react-hooks/exhaustive-deps`.
plugins/typescript/rules/no_restricted_imports
Package no_restricted_imports provides the @typescript-eslint/no-restricted-imports rule, which extends the core ESLint no-restricted-imports rule with first-class support for TypeScript-only syntax: `import type ...`, inline `import { type X }`, `import x = require(...)`, `import type x = require(...)`, and `export type ...`.
Package no_restricted_imports provides the @typescript-eslint/no-restricted-imports rule, which extends the core ESLint no-restricted-imports rule with first-class support for TypeScript-only syntax: `import type ...`, inline `import { type X }`, `import x = require(...)`, `import type x = require(...)`, and `export type ...`.
rules/no_implied_eval
cspell:ignore sctx
cspell:ignore sctx
rules/no_misleading_character_class
Package no_misleading_character_class implements ESLint's no-misleading-character-class rule on top of the layered regex / JS string utilities in `internal/utils`.
Package no_misleading_character_class implements ESLint's no-misleading-character-class rule on top of the layered regex / JS string utilities in `internal/utils`.
rules/no_useless_backreference
Package no_useless_backreference implements ESLint's no-useless-backreference rule.
Package no_useless_backreference implements ESLint's no-useless-backreference rule.
rules/no_useless_escape
Package no_useless_escape implements ESLint's `no-useless-escape` rule.
Package no_useless_escape implements ESLint's `no-useless-escape` rule.
utils
cspell:ignore octals
cspell:ignore octals
tools
gen_shims command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL