Code Formatierung und Linting
Wie in dem Projekt Biome verwendet wird, um richtigen und schönen Code zu erhalten
Biome übernimmt das Code Formatting und Linting in diesem Projekt.
Biome ist in das Root-Package des Projektes integriert und wird in der biome.json konfiguriert. Als Startpunkt nutzt Biome das Pre-Config Package Ultracite. In der biome.json sind ebenfalls einige Ordner und Dateien definiert, die von Biome ignoriert werden. Insbesondere sind dies automatisch und ebenfalls von Git ignorierte automatisch generierte Ordner und Dateien und Ordner, die beim Build-Prozess automatisch erstellt werden.
CLI Commands
Ultracite CLI
pnpm ultracite lintführt den Biome Linter aus, ohne das Formatierungen angewendet werden. Stattdessen wird gewarnt, dass Formatierungen falsch sind. Hinter diesem Command steckt die Anweisungnpx biome check ./.pnpm ultracite formatführt den Biome Linter aus und wendet empfohlene Formatierungen auf die Dateien an. Hinter diesem Command steckt die Anweisungnpx biome check --write ./.
Biome CLI
Die Biome CLI bietet viele weitere Möglichkeiten Code zu testen und zu berichtigen.
biome ragezeigt Informationen zum Debugging.biome rage --formatterzeigt die angewendeten Formatter Optionen,biome rage --linterzeigt die angewendeten Linter-Optionen.biome checkführt den Biome Formatter und Linter aus und prüft die Import-Sortierung. Es werden keine Änderungen an den Dateien vorgenommen.--writeändert die Dateien so, dass sichere Fixes, vorgeschlages Formatting und Import-Sortierungen angewendet werden.--fixist ein Alias für--write--unsafewendet in Kombination mit--writeoder--fixauch unsichere Fixes an. Diese könnten dazu führen, dass der Code nicht mehr funktioniert.--formatter-enabled=<true|false>kontrolliert, ob der Formatter Check ausgeführt wird oder nicht.--linter-enabled=<true|false>kontrolliert, ob der Lint Check ausgeführt wird oder nicht.--organize-imports-enabled=<true|false>kontrolliert, ob Imports sortiert werden sollen, oder nicht.--assists-enabled=<true|false>aktiviert oder deaktiviert die Assists.--changedlintet nur die Dateien, die im Vergleich zumdefaultBranchverändert wurden.
biome ciführt Formatter Linter und Import-Sortierung aus. Dieser Command funktioniert wie der Commandbiome checkist aber speziell für die Verwendung im CI-Umfeld optimiert.--formatter-enabled=<true|false>kontrolliert, ob der Formatter Check ausgeführt wird oder nicht.--linter-enabled=<true|false>kontrolliert, ob der Lint Check ausgeführt wird oder nicht.--organize-imports-enabled=<true|false>kontrolliert, ob Imports sortiert werden sollen, oder nicht.--assists-enabled=<true|false>aktiviert oder deaktiviert die Assists.--changedlintet nur die Dateien, die im Vergleich zumdefaultBranchverändert wurden.
Anwendung in diesem Projekt
Im Root-Package des Projektes sind mehrere Commands definiert, um die Biome CLI.
pnpm lint:rootführt den Commandultracite lintin allen Teilen des Projektes aus. Es werden das Root-Verzeichnis sowie alle Unterordner incl.apps/undpackages/geprüft. Eine Formatierung wird nicht vorgenommen. Da dieser Command auch als Turbo Task definiert ist, istpnpm turbo lint:rootgleichbedeutend.pnpm lintführt den Commandturbo lintaus. Dieser Command stößt den Tubo-Tasklintan.pnpm turbo lintist gleichbedeutend.pnpm format:rootführt den Commandultracite formatin allen Teilen des Projektes aus. Es werden das Root-Verzeichnis sowie alle Unterordner incl.apps/undpackages/geprüft. Formatierungen werden ggf. angepasst. Da dieser Command auch als Turbo Task definiert ist, istpnpm turbo format:rootgleichbedeutend.pnpm formatführt den Commandturbo formataus. Dieser Command stößt den Tubo-Taskformatan.pnpm turbo formatist gleichbedeutend.pnpm lint:ciist ein Command speziell für den Turborepo CI Workflow undpnpm localci. Hier wirdbiome ci ./ausgeführt, was gleichbedeutend mitpnpm lintaber für den Einsatz in CI-Workflows optimiert ist.
Turbo Tasks
pnpm turbo lintführt das Scriptlintin allen Apps und Packages aus, in denen ein solches Script definiert ist. In allenpackage.jsonsollte daher ein Script definiert sein, dass hinter dem Scriptlintden Commandultracite lintausführt.pnpm turbo formatführt das Scriptformatin allen Apps und Packages aus, in denen ein solches Script definiert ist. In allenpackage.jsonsollte daher ein Script definiert sein, dass hinter dem Scriptformatden Commandultracite formatausführt.
{
"name":"@northware/ui",
...
"scripts": {
...
"check": "ultracite check",
"fix": "ultracite fix"
...
},
}Die Commands pnpm lint:root und pnpm format:root wenden den Biome Linter und Formatter auf alle Dateien des Packages an.
pnpm lint und pnpm format greifen auf die selbe Config-Datei zu und führen den selben Command in den Apps und Packages des Projektes aus.
pnpm lint und pnpm format sind dafür gedacht, die Ausführung des Biome Linters und Formatters mit dem --filter Flag nur auf einzelne Apps und Packages anzuwenden.
Sollen alle Teile des Projektes geprüft werden, sollten pnpm lint:root oder pnpm format:root ausgeführt werden.
Keinesfalls sollten pnpm format und pnpm format:root sowie pnpm lint und pnpm lint:root kombiniert werden, da dann beide Commands die selbe Arbeit erledigen.