100-mal schneller als Eslint! Eine neue Generation von JS Linter ist erschienen!

100-mal schneller als Eslint! Eine neue Generation von JS Linter ist erschienen!

Fügen Sie hier eine Bildbeschreibung ein

OxcIst eine Sammlung leistungsstarker Tools, die Rustin der Sprache geschrieben sind . Ihr Ziel ist es, die grundlegenden Compiler-Tools für Parser, Linters, Formatter, Übersetzer, Kompressoren, Parser usw. JavaScriptzu erstellen , und dieses Mal haben sie ein neues Tool veröffentlicht.JavaScriptlinter

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

OxlintDrei Hauptmerkmale:

  • ESLintLeistung: Code schneller verarbeiten 50-100.
  • Sicherheit: RustSpeichersicherheitsgarantien beseitigen bestimmte Fehlerklassen.
  • Kompatibilität: Derzeit sind mehr als nur Regeln integriert 200, und die Liste wächst, von eslint、typescript、eslint-plugin-react、eslint-plugin-jest、eslint-plugin-unicornund eslint-plugin-jsx-a11y; Annotations-Ignorierregeln für .eslintignoreund werden unterstützt.ESLint

Aber als Ersatz Eslintlautet die offizielle Antwort:

Zum jetzigen Zeitpunkt oxlintbesteht nicht die Absicht, es vollständig zu ersetzen ESLint, ESLintes kann jedoch als Verbesserung verwendet werden, wenn die Langsamkeit von .

Für eine schnellere Feedback-Schleife wird offiziell empfohlen, die Funktion zuvor in lintStages oder CIin Settings ESLintauszuführen oxlint, was bei großen Code-Repositories nur wenige Sekunden dauert.

Um JavaScript / TypeScriptim 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.ESLint10

Beschreibung eines Entwicklers mit ShopifyErfahrung in Forschung und Entwicklung :PreactJason Miller

OxlintShopifyEs war ein großer Erfolg für unsere Bewerbung in . lintDie Ausführung unseres vorherigen Setups dauerte 75 Minuten, daher haben wir mehrere Worker-Knoten auf CIkonfiguriert . 40Im Vergleich dazu dauert Oxlintdie Überprüfung derselben Codebasis auf einem einzelnen Worker-Knoten lintnur etwa 10Sekunden 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 Oxlintder gezielten Entwicklung zur Leistungssteigerung, wobei Rustdie Parallelverarbeitung Schlüsselfaktoren ist.

Tatsächlichen Tests in verschiedenen Projekten zufolge linterist die Geschwindigkeit mindestens um ein Vielfaches höher ESLintals bei 50, und die Leistung CPUverbessert sich mit zunehmender Anzahl der Kerne weiter.

Hier ist ein vscodeBeispiel, das im Repository (einem sehr großen Front-End-Repository: https://github.com/microsoft/vscode) ausgeführt wird und mehrere Dateien in Sekunden 0.5fertigstellt .4000linting

Genauigkeit

OxlintStandardmäßig wird bei der Identifizierung fehlerhaften, redundanten oder verwirrenden Codes die Richtigkeit Vorrang vor unnötig wählerischen Regeln (klassifiziert als perf、suspicious、pedanticoder style) haben, die standardmäßig deaktiviert sind.

Einfacher Einstieg

Das Einrichten einer neuen JavaScript / TypeScriptCodebasis wird immer komplexer und Sie werden wahrscheinlich auf Kompatibilitätsprobleme zwischen Tools stoßen, die Stunden Zeit verschwenden können.

Aber Oxlintda es so konzipiert ist, dass es sofort ohne Konfiguration funktioniert, Node.jsist nicht einmal eine Umgebung erforderlich, die meisten Optimierungen können über die Befehlszeile vorgenommen werden und ESLintdas Lesen von Daten aus Konfigurationsdateien wird derzeit schrittweise eingeführt.

In Umgebungen ohne können Sie Binärdateien Node.jsdirekt von der neuesten GitHubVersion herunterladen ( ).https://github.com/oxc-project/oxc/releases/tag/oxlint_v0.0.20

Leicht lesbare Testergebnisse

Das Verstehen linterder Informationen kann manchmal mühsam sein, aber Oxlintes 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 vscodees auch in diesem Repository ausführen oxlint -D perf:

Fügen Sie hier eine Bildbeschreibung ein

Integrationsregeln

OxlintEs 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-a11yintegrieren Import.

Plug-Ins JavaScriptsind im Ökosystem sehr wichtig, daher Oxlinterforschen wir derzeit DSLein 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 forkedaufgrund von Versionseinschränkungen zu einem Plugin wechseln müssen.

Befehl

  • npx oxlint@latest --rulesRufen Sie eine Liste aller integrierten Regeln ab.
  • npx oxlint@latest --helpHolen 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

おすすめ

転載: blog.csdn.net/dfc_dfc/article/details/135172646