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.
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, kommttxtzum Einsatz).--theme— die Theme-ID. Standardmäßiggithub-dark.
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:
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
MakefileoderDockerfile; für sie wirdtxtverwendet; - 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:
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.
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).
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.
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 |