- Notifications
You must be signed in to change notification settings - Fork3
✨ Experimental proof-of-concept typescript-go powered JS/TS linter written in Go
License
typescript-eslint/tsgolint
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
tsgolint is an experimental proof-of-concepttypescript-go powered JS/TS linter written in Go.
Important
tsgolint is a prototype in the early stages of development.It is not actively being worked on, nor is it expected to be production ready.SeeGoals and Non-Goals.
- Primitive linter engine
- Lint rules tester
- Source code fixer
- 40type-aware typescript-eslint's rules
- Basic
tsgolint
CLI
tsgolint is20-40 times faster than ESLint + typescript-eslint.
Most of the speedup is due to the following facts:
- Native speed parsing and type-checking (thanks totypescript-go)
- No moreTS AST -> ESTree AST conversions. TS AST is directly used in rules.
- Parallel parsing, type checking and linting.tsgolint uses all available CPU cores.
Seebenchmarks for more info.
- Non-type-aware rules
- Editor extension
- Rich CLI features
- Config file
- Plugin system
JS-based plugins are not currently supported.
- Experimental support is available on the
experimental-eslint-compat
branch using thegoja JavaScript engine. - While functional, performance was significantly worse than ESLint running in Node.js, so this approach is currently on hold.
- If a faster, lower-allocation JS interpreter in Go becomes available in the future, we may revisit this idea.
tsgolint is an experiment.It is not under active development.
Goals: to explore architectures and performance characteristics.We want to investigate how much faster linting could be if we moved the linter to Go alongside typescript-go.
Non-Goals: we have no plans to take significant development budget away from typescript-eslint to work on tsgolint.Our plan is to continue to work on typescript-eslint to supported typed linting with ESLint.Experiments such as tsgolint should not be taken as indications of any project direction.
If you want faster typed linting with ESLint, seetypescript-eslint/typescript-eslint#10940 Enhancement: Use TypeScript's Go port (tsgo / typescript-go) for type information.
git submodule update --init# init typescript-go submodulecd typescript-gogit am --3way --no-gpg-sign ../patches/*.patch# apply typescript-go patchescd ..go build -o tsgolint ./cmd/tsgolint
About
✨ Experimental proof-of-concept typescript-go powered JS/TS linter written in Go
Resources
License
Uh oh!
There was an error while loading.Please reload this page.