100-mal schneller als Eslint! Eine neue Generation von JS Linter ist erschienen!
Oxc
Ist eine Sammlung leistungsstarker Tools, die Rust
in der Sprache geschrieben sind . Ihr Ziel ist es, die grundlegenden Compiler-Tools für Parser, Linters, Formatter, Übersetzer, Kompressoren, Parser usw. JavaScript
zu erstellen , und dieses Mal haben sie ein neues Tool veröffentlicht.JavaScript
linter
Oxlint
ist eine von Rust
, geschriebene neue Generation JavaScript linter
, die Entwicklern dabei helfen soll, Fehler oder nutzlosen Code zu erkennen, und erfordert standardmäßig keine Konfiguration.
Oxlint
Drei Hauptmerkmale:
ESLint
Leistung: Code schneller verarbeiten50-100
.- Sicherheit:
Rust
Speichersicherheitsgarantien beseitigen bestimmte Fehlerklassen. - Kompatibilität: Derzeit sind mehr als nur Regeln integriert
200
, und die Liste wächst, voneslint、typescript、eslint-plugin-react、eslint-plugin-jest、eslint-plugin-unicorn
undeslint-plugin-jsx-a11y
; Annotations-Ignorierregeln für.eslintignore
und werden unterstützt.ESLint
Aber als Ersatz Eslint
lautet die offizielle Antwort:
Zum jetzigen Zeitpunkt oxlint
besteht nicht die Absicht, es vollständig zu ersetzen ESLint
, ESLint
es kann jedoch als Verbesserung verwendet werden, wenn die Langsamkeit von .
Für eine schnellere Feedback-Schleife wird offiziell empfohlen, die Funktion zuvor in lint
Stages oder CI
in Settings ESLint
auszuführen oxlint
, was bei großen Code-Repositories nur wenige Sekunden dauert.
Um JavaScript / TypeScript
im Repository zu testen oxlint
, führen wir einfach den folgenden Befehl im Stammverzeichnis des Repositorys aus:
npx oxlint@latest // npm
pnpm dlx oxlint@latest // pnpm
yarn dlx oxlint@latest // yarn
bunx oxlint@latest // bun
deno run oxlint@latest // deno
Leistung
Berichten zufolge beträgt die Laufzeit Shopify
, die ursprünglich 75 Minuten betrug, in einem realen Szenario nun nur noch Sekunden.ESLint
10
Beschreibung eines Entwicklers mit Shopify
Erfahrung in Forschung und Entwicklung :Preact
Jason Miller
Oxlint
Shopify
Es war ein großer Erfolg für unsere Bewerbung in . lint
Die Ausführung unseres vorherigen Setups dauerte 75 Minuten, daher haben wir mehrere Worker-Knoten auf CI
konfiguriert . 40
Im Vergleich dazu dauert Oxlint
die Überprüfung derselben Codebasis auf einem einzelnen Worker-Knoten lint
nur etwa 10
Sekunden und die Ausgabe ist einfacher zu interpretieren. Bei der Migration haben wir sogar einige Fehler gefunden, die von unserem alten Setup ausgeblendet oder übersprungen wurden!
Ein Großteil des Leistungsgewinns ergibt sich aus Oxlint
der gezielten Entwicklung zur Leistungssteigerung, wobei Rust
die Parallelverarbeitung Schlüsselfaktoren ist.
Tatsächlichen Tests in verschiedenen Projekten zufolge linter
ist die Geschwindigkeit mindestens um ein Vielfaches höher ESLint
als bei 50
, und die Leistung CPU
verbessert sich mit zunehmender Anzahl der Kerne weiter.
Hier ist ein vscode
Beispiel, das im Repository (einem sehr großen Front-End-Repository: https://github.com/microsoft/vscode) ausgeführt wird und mehrere Dateien in Sekunden 0.5
fertigstellt .4000
linting
Genauigkeit
Oxlint
Standardmäßig wird bei der Identifizierung fehlerhaften, redundanten oder verwirrenden Codes die Richtigkeit Vorrang vor unnötig wählerischen Regeln (klassifiziert als perf、suspicious、pedantic
oder style
) haben, die standardmäßig deaktiviert sind.
Einfacher Einstieg
Das Einrichten einer neuen JavaScript / TypeScript
Codebasis wird immer komplexer und Sie werden wahrscheinlich auf Kompatibilitätsprobleme zwischen Tools stoßen, die Stunden Zeit verschwenden können.
Aber Oxlint
da es so konzipiert ist, dass es sofort ohne Konfiguration funktioniert, Node.js
ist nicht einmal eine Umgebung erforderlich, die meisten Optimierungen können über die Befehlszeile vorgenommen werden und ESLint
das Lesen von Daten aus Konfigurationsdateien wird derzeit schrittweise eingeführt.
In Umgebungen ohne können Sie Binärdateien Node.js
direkt von der neuesten GitHub
Version herunterladen ( ).https://github.com/oxc-project/oxc/releases/tag/oxlint_v0.0.20
Leicht lesbare Testergebnisse
Das Verstehen linter
der Informationen kann manchmal mühsam sein, aber Oxlint
es soll den Prozess vereinfachen, indem es die Grundursache ermittelt und nützliche Informationen bereitstellt, wodurch das Lesen umständlicher Regeldokumente entfällt und wertvolle Zeit gespart wird.
Wir können vscode
es auch in diesem Repository ausführen oxlint -D perf
:
Integrationsregeln
Oxlint
Es stellt selbst kein Plug-In-System bereit. Seine Idee ist es, Regeln aus allen gängigen Plug-Ins wie und zu TypeScript,React,Jest,Unicorn,JSX-a11y
integrieren Import
.
Plug-Ins JavaScript
sind im Ökosystem sehr wichtig, daher Oxlint
erforschen wir derzeit DSL
ein Plug-In-System auf Basis von .
Möglicherweise bevorzugen Sie jedoch ein eigenständiges Plugin linter
– eines, bei dem Sie keine Liste von Plugin-Abhängigkeiten verwalten, sich keine Gedanken über Kompatibilitätsprobleme machen oder forked
aufgrund von Versionseinschränkungen zu einem Plugin wechseln müssen.
Befehl
npx oxlint@latest --rules
Rufen Sie eine Liste aller integrierten Regeln ab.npx oxlint@latest --help
Holen Sie sich alle Konfigurationsanweisungen.
Usage: oxlint [-A=NAME | -D=NAME]... [--fix] [PATH]...
Allowing / Denying Multiple Lints
For example `-D correctness -A no-debugger` or `-A all -D no-debugger`.
The default category is "-D correctness".
Use "--rules" for rule names.
Use "--help --help" for rule categories.
-A, --allow=NAME Allow the rule or category (suppress the lint)
-D, --deny=NAME Deny the rule or category (emit an error)
Enable Plugins
--import-plugin Enable the experimental import plugin and detect ESM problems
--jest-plugin Enable the Jest plugin and detect test problems
--jsx-a11y-plugin Enable the JSX-a11y plugin and detect accessibility problems
Fix Problems
--fix Fix as many issues as possible. Only unfixed issues are reported in the
output
Ignore Files
--ignore-path=PATH Specify the file to use as your .eslintignore
--ignore-pattern=PAT Specify patterns of files to ignore (in addition to those in .eslintignore)
--no-ignore Disables excluding of files from .eslintignore files, --ignore-path flags
and --ignore-pattern flags
Handle Warnings
--quiet Disable reporting on warnings, only errors are reported
--deny-warnings Ensure warnings produce a non-zero exit code
--max-warnings=INT Specify a warning threshold, which can be used to force exit with an error
status if there are too many warning-level rule violations in your project
Miscellaneous
--timing Display the execution time of each lint rule
[env:TIMING: not set]
--rules list all the rules that are currently registered
--threads=INT Number of threads to use. Set to 1 for using only 1 CPU core
Codeowners
--codeowners-file=PATH Path to CODEOWNERS file
--codeowners=NAME Code owner names, e.g. @Boshen
Available positional items:
PATH Single file, single path or list of paths
Available options:
-h, --help Prints help information