Vor fast zwei Wochen erschien ein Blogbeitrag über Rom.
Rom ist eine ganze Reihe von Werkzeugen - Linter, Compiler, Builder, Testrunner und mehr. Es zielt auf JS, TS, HTML, JSON, Markdown, CSS ab. Das Projekt versucht, die für die Front-End-Entwicklung erforderlichen Tools zu vereinheitlichen.
Rom ist monolithisch und umfasst alle traditionellen Front-End-Ökosystem-Tools. Das Entwicklungsteam nennt es die Toolchain. Der wichtige Punkt ist, dass dies kein Versuch ist, einen vorhandenen Satz von Werkzeugen zusammenzuführen, sondern einen völlig neuen Satz von Werkzeugen zu entwickeln. All dies sollte in einem Paket und einer einzigen Codebasis enthalten sein.
Rom wird als Ersatz für Babel, ESLint, Webpack, Prettier, Jest und andere entwickelt.
Mal sehen, wohin das führen wird, um ehrlich zu sein, bin ich mit einer gewissen Konkurrenz und einem "nicht monolithischen" Ansatz bei Entwicklungswerkzeugen zufrieden. Ja, für einen Anfänger ist der Eingang nicht offensichtlich, es gibt zu viele Werkzeuge, die meistens austauschbar sind. Vielleicht wird Rom in dieser Nuance die Eintrittsschwelle leicht senken.
Aktuellen Zustand
Rom befindet sich in der Beta-Phase und nimmt bereits einige seiner Aufgaben wahr. Beispielsweise unterstützt der Linter bereits 100 Regeln, einschließlich der Regeln, die häufig bei der Verwendung von Typescript und React verwendet werden. Die vollständige Liste der Regeln finden Sie hier. Die
Open Source des Projekts begann Anfang des Jahres und das Projekt hat bereits 70 Mitwirkende und über 600 Commits. Im Allgemeinen entwickelt sich das Projekt und bisher ist keine Dämpfung sichtbar.
Ein bisschen Geschichte
Im Jahr 2014 wurde 6to5 (jetzt Babel genannt) erstellt. Dies ist ein JavaScript-Transpiler, der neuen ES6-Code in ES5 kompiliert hat. Zu diesem Zeitpunkt hatte das Projekt keine Ziele gesetzt, aber mit der wachsenden Popularität musste die Entwicklung angepasst werden.
6to5 wurde in Babel umbenannt und das neue Ziel war es, ein gemeinsames Framework für statische JavaScript-Transformationen zu werden. Dies bedeutete ein Plugin-System und Unterstützung für neue Funktionen für zukünftige JavaScript-Standards und sogar "Vorschläge".
Das Entwicklungsteam dachte daran, noch weiter zu gehen. Babel sollte sich unter der Haube von Minifahrern, Lintern, Formatierern, Syntaxhervorhebungen, Typprüfern, Kompilierungswerkzeugen usw. befinden.
2016 verließ der Schöpfer von Babel das Projekt. Im Laufe der Zeit wurde klar, dass der Ansatz, eine breite API (buchstäblich alle Interna) bereitzustellen, zu schwierig zu pflegen war. Um das obige Toolkit zu unterstützen, müsste buchstäblich alles neu geschrieben werden. Die Architektur des Projekts hängt mit den Entscheidungen zusammen, die der Autor 2014 getroffen hat, und untersucht nur, wie AST-Parser und -Compiler funktionieren. Die Änderungen würden den größten Teil der API ohne Abwärtskompatibilität betreffen.
Entwickler von JavaScript-Tools verbringen enorm viel Zeit mit der Verarbeitung von Quellcode. Babel, ESlint und Webpack machen teilweise dasselbe.
Linters im JavaScript-Ökosystem sind wie Compiler. Beide nehmen den Quellcode als Eingabe, verarbeiten ihn und geben den Code und etwaige Fehler aus. Nur der empfangene Code ist unterschiedlich. Beim Linter handelt es sich um formatierten Quellcode mit Patches.
Je stärker Ihre Kompilierungsinfrastruktur ist, desto stärker ist der Linter. Gleiches gilt für andere Tools, die Code auf die eine oder andere Weise verarbeiten. Wir können leistungsfähigere Tools mithilfe eines gemeinsamen Frameworks erstellen, das einfach anzupassen ist.
Rom ist der geistige Nachfolger von Babel. Ich habe meine Lektionen gelernt und mir klare Ziele gesetzt. Anstatt eine übermäßig umfangreiche öffentliche API für andere Tools bereitzustellen, sammeln wir sie alle an einem Ort. Ich bin begeistert, etwas Neues auszuprobieren, das JavaScript und das Web-Ökosystem noch nie gesehen haben.
- Sebastian McKenzie
Verwenden von
Rom kann mit Garn oder NPM installiert werden:
yarn add rome
npm install rome
Projekterstellung
Damit Rom Ihre Dateien finden kann, muss es konfiguriert werden. Um ein Projekt automatisch zu erstellen, können Sie Folgendes verwenden:
rome init
Dieser Befehl erstellt ein .config- Verzeichnis und legt dort rome.rjson mit der Projektkonfiguration ab.
Wenn Sie bereits ein Projekt haben, können Sie Formatierungen und Korrekturen sofort automatisch anwenden:
rome init --apply
RJSON ist eine JSON-Erweiterung, die einige Funktionen hinzufügt. Zum Beispiel Kommentare in JSON.
Sie können den Linter mit starten
rome check
Flusen
Rom soll so viele Informationen wie möglich liefern, um Fehler zu korrigieren. Das Projekt hat eine Art Credo:
Rich UI (Ergebnis in der Konsole): Gut formatierte Informationen, Hervorhebung der Syntax, Links, Listen und mehr.
Korrekturen: Rom kann viele Fehler (wie Linters) beheben und automatisch anwenden. Wenn es mehrere Lösungen gibt, haben Sie mit dem Tool die Wahl.
Überprüfungsprozess: Die CLI ist interaktiv und ermöglicht es Ihnen, Entscheidungen über Korrekturen zu treffen und alle Fehler direkt in der Konsole zu überprüfen.
Editoren: Rom lässt sich in Editoren integrieren, sodass Sie Formatierungen zum Speichern, Hervorheben von Fehlern usw. vornehmen können.
Aufbewahrung: Rom speichert die Originaldateien zwischen, bevor Änderungen vorgenommen werden. Verwenden vonWenn Sie sich erholen , können Sie die Korrekturen rückgängig machen.
Anstelle einer Schlussfolgerung
Während sich dieses Tool noch in der aktiven Entwicklung befindet, kann es bereits irgendwie ausprobiert werden. Die Hauptsache ist, dass es nicht so ausfällt:
Off-Dokumentation