Package Exports
- oxlint-tsgolint/bin/tsgolint
- oxlint-tsgolint/bin/tsgolint.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (oxlint-tsgolint) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
✨ tsgolint ✨
tsgolint is a high-performance TypeScript linter containing only type-aware rules, powered by typescript-go and designed for integration with Oxlint.
Key highlights:
- Performance: 20-40x faster than ESLint + typescript-eslint
- Type-aware: Comprehensive TypeScript type checking integration
- Parallel: Utilizes all available CPU cores
- Compatible: Implements typescript-eslint rules with consistent behavior
This project originated in typescript-eslint/tsgolint. Fork permission is granted by @auvred.
[!IMPORTANT] tsgolint is a prototype in the early stages of development. This is a community effort. Feel free to ask to be assigned to any of the good first issues.
Installation & Usage
tsgolint is integrated into Oxlint as the type-aware backend. Install and use via Oxlint:
# Install oxlint with type-aware support
pnpm add -D oxlint-tsgolint@latest
# Quick start
pnpm dlx oxlint --type-aware
# Or run on your project
oxlint --type-awareConfiguration
Configure type-aware rules in .oxlintrc.json:
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"rules": {
"typescript/no-floating-promises": "error",
"typescript/no-misused-promises": "error"
}
}Over 30 TypeScript-specific type-aware rules are available. For detailed setup and configuration, see the Oxlint Type-Aware Linting guide.
Performance
tsgolint is 20-40 times faster than ESLint + typescript-eslint.
Real-World Performance Examples
- napi-rs (144 files): 1.0s
- preact (245 files): 2.7s
- rolldown (314 files): 1.5s
- bluesky (1152 files): 7.0s
Speed Sources
- Native Speed: Go implementation with direct TypeScript compiler integration
- Zero Conversion: Direct TypeScript AST usage without ESTree conversion overhead
- Parallel Processing: Multi-core execution utilizing all available CPU cores
- Efficient Memory: Streaming diagnostics and optimized resource usage
See benchmarks for detailed performance comparisons.
Current Status
In Development 🚧
- Additional typescript-eslint rules
- Disable Comments
- Rule Configuration
- IDE usage
Architecture
tsgolint follows a clean separation between frontend and backend:
- Oxlint CLI handles file discovery, configuration, and output formatting
- tsgolint backend provides type-aware rule execution and diagnostics
- TypeScript integration via typescript-go for native performance
For detailed technical documentation, see ARCHITECTURE.md.
Contributing
We welcome contributions! See CONTRIBUTING.md for:
- Development setup and building instructions
- Testing procedures and guidelines
- How to implement new rules
- Code style and contribution workflow
Implemented Rules (42/59)
- consistent-return
- consistent-type-exports
- dot-notation
- naming-convention
- no-unnecessary-condition
- no-unnecessary-qualifier
- no-unnecessary-type-conversion
- no-unnecessary-type-parameters
- prefer-destructuring
- prefer-find
- prefer-includes
- prefer-nullish-coalescing
- prefer-optional-chain
- prefer-readonly
- prefer-readonly-parameter-types
- prefer-regexp-exec
- prefer-string-starts-ends-with
- await-thenable
- no-array-delete
- no-base-to-string
- no-confusing-void-expression
- no-deprecated
- no-duplicate-type-constituents
- no-floating-promises
- no-for-in-array
- no-implied-eval
- no-meaningless-void-operator
- no-misused-promises
- no-misused-spread
- no-mixed-enums
- no-redundant-type-constituents
- no-unnecessary-boolean-literal-compare
- no-unnecessary-template-expression
- no-unnecessary-type-arguments
- no-unnecessary-type-assertion
- no-unsafe-argument
- no-unsafe-assignment
- no-unsafe-call
- no-unsafe-enum-comparison
- no-unsafe-member-access
- no-unsafe-return
- no-unsafe-type-assertion
- no-unsafe-unary-minus
- non-nullable-type-assertion-style
- only-throw-error
- strict-boolean-expressions
- prefer-promise-reject-errors
- prefer-reduce-type-parameter
- prefer-return-this-type
- promise-function-async
- related-getter-setter-pairs
- require-array-sort-compare
- require-await
- restrict-plus-operands
- restrict-template-expressions
- return-await
- switch-exhaustiveness-check
- unbound-method
- use-unknown-in-catch-callback-variable
Links
- ARCHITECTURE.md - Detailed technical documentation
- CONTRIBUTING.md - Development and contribution guidelines
- Benchmarks - Performance comparison data
- TypeScript Go - Underlying TypeScript compiler
- Oxlint - Frontend linter integration