Zum Inhalt springen

CLI

shikiphp enthält ein kleines Befehlszeilenwerkzeug unter bin/shikiphp (in deinem Projekt installiert als vendor/bin/shikiphp). Es bietet drei Befehle: highlight rendert eine Datei nach HTML, und langs sowie themes listen die Inhalte des Pakets auf.

highlight

Eine Datei nach HTML hervorheben und auf stdout ausgeben.

Shell
vendor/bin/shikiphp highlight <file> [--lang=<lang>] [--theme=<theme>]
  • <file> — der einzulesende Pfad. Er muss auf eine vorhandene Datei verweisen; die Standardeingabe wird nicht gelesen.
  • --lang — die Sprach-ID oder ein Alias. Falls nicht angegeben, wird die Dateiendung unverändert als ID verwendet (falls keine vorhanden ist, kommt txt zum Einsatz).
  • --theme — die Theme-ID. Standardmäßig github-dark.
Shell
vendor/bin/shikiphp highlight src/App.php --lang=php --theme=nord

Die Ausgabe ist derselbe Single-Theme-<pre class="shiki …">-Block, den codeToHtml zurückgibt, gefolgt von einem Zeilenumbruch. So kannst du sie direkt in eine Datei umleiten:

Shell
vendor/bin/shikiphp highlight src/App.php --theme=github-light > app.html

Der Befehl akzeptiert keine weiteren Optionen. Für Dual-Themes, Transformer oder andere Optionen verwende stattdessen PHP API.

Optionen und Argumente

Optionen müssen das Format --name=value verwenden. Andere Argumente, die mit -- beginnen, werden ignoriert. Als Datei wird das letzte Argument verwendet, das nicht mit -- beginnt. --lang php file.rs hebt daher file.rs als Rust hervor: --lang wird ignoriert, php durch file.rs ersetzt und die Sprache anhand der Endung .rs ermittelt.

Spracherkennung

Ohne --lang wird die Dateiendung unverändert als Sprach-ID verwendet. Das funktioniert, wenn die Endung selbst eine mitgelieferte ID oder ein Alias ist — php, js, ts, tsx, py, rs, go, md, yml, json, sh und viele weitere (siehe Sprachen). In diesen Fällen funktioniert es nicht:

  • Dateien ohne Endung, etwa Makefile oder Dockerfile; für sie wird txt verwendet;
  • Endungen, die keine Sprach-ID sind, etwa .txt.

txt ist keine mitgelieferte Sprache, daher enden beide Fälle derzeit mit einem Unknown language "txt"-Fehler (#3). Gib für diese Dateien --lang an:

Shell
vendor/bin/shikiphp highlight Dockerfile --lang=docker
vendor/bin/shikiphp highlight Makefile --lang=make

langs

Gibt jede ID, die das Paket als Sprache akzeptiert, einzeln pro Zeile aus.

Shell
vendor/bin/shikiphp langs

Die Liste umfasst 350 Zeilen: die 253 mitgelieferten Grammatik-IDs in Paket-Reihenfolge (nicht alphabetisch), gefolgt von ihren 97 Aliasen (js, cjs, mjs usw.). Zu den Grammatik-IDs gehören 18 Hilfsgrammatiken, die in andere Grammatiken eingebettet werden, etwa vue-directives und es-tag-css. Im Katalog unter Sprachen findest du Namen und Aliase. Leite die Liste durch sort, um sie alphabetisch zu sortieren.

themes

Gibt jede mitgelieferte Theme-ID einzeln pro Zeile und alphabetisch sortiert aus (65 Themes).

Shell
vendor/bin/shikiphp themes

Im Katalog unter Themes findest du Namen und helle/dunkle Typen.

Hilfe und Exit-Status

Führe den Befehl ohne Kommando oder mit -h / --help / help aus, um die Verwendungshinweise auszugeben.

Shell
vendor/bin/shikiphp --help
Situation Ausgabe Exit-Status
Erfolg oder Hilfe stdout 0
Unbekanntes Kommando Unknown command: <name> auf stderr 1
highlight ohne Datei oder Datei nicht vorhanden Verwendungshinweis auf stderr 1
Unbekannte Sprache oder unbekanntes Theme nicht abgefangener Shikiphp\Exceptions\Highlight (PHP-Abbruchfehler mit Stacktrace) 255