Przejdź do treści

CLI

shikiphp zawiera niewielkie narzędzie wiersza poleceń pod adresem bin/shikiphp (instalowane w projekcie jako vendor/bin/shikiphp). Udostępnia trzy polecenia: highlight rendruje pojedynczy plik do HTML, a langs i themes wyświetlają zawartość pakietu.

highlight

Podświetl plik do HTML i wypisz wynik na stdout.

Powłoka
vendor/bin/shikiphp highlight <file> [--lang=<lang>] [--theme=<theme>]
  • <file> — ścieżka do odczytu. Plik musi istnieć; dane ze standardowego wejścia nie są odczytywane.
  • --lang — identyfikator języka lub alias. Jeśli go pominięto, rozszerzenie pliku jest używane bez zmian jako identyfikator (a gdy go brak, stosowane jest txt).
  • --theme — identyfikator motywu. Domyślnie github-dark.
Powłoka
vendor/bin/shikiphp highlight src/App.php --lang=php --theme=nord

Wynik to ten sam blok <pre class="shiki …"> z jednym motywem, który zwraca codeToHtml, po którym następuje znak nowej linii, dzięki czemu można go bezpośrednio przekierować do pliku:

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

Polecenie nie przyjmuje innych opcji. W przypadku dwóch motywów, transformerów lub innej opcji użyj zamiast tego PHP API.

Opcje i argumenty

Opcje muszą mieć postać --name=value. Pozostałe argumenty rozpoczynające się od -- są ignorowane, a ostatni argument, który nie zaczyna się od --, jest traktowany jako plik. Dlatego --lang php file.rs podświetla file.rs jako Rust: --lang jest ignorowane, php zostaje zastąpione przez file.rs, a język jest określany na podstawie rozszerzenia .rs.

Określanie języka

Bez --lang rozszerzenie staje się niezmienionym identyfikatorem języka. Działa to, gdy rozszerzenie jest identyfikatorem lub aliasem z pakietu — php, js, ts, tsx, py, rs, go, md, yml, json, sh i wiele innych (zobacz Języki). Nie działa to w przypadku:

  • plików bez rozszerzenia, takich jak Makefile lub Dockerfile, dla których stosowane jest txt;
  • rozszerzeń, które nie są identyfikatorami języka, takich jak .txt.

txt nie jest dołączonym językiem, więc w obu przypadkach pojawia się obecnie nieobsłużony błąd Unknown language "txt" (#3). W przypadku tych plików przekaż --lang:

Powłoka
vendor/bin/shikiphp highlight Dockerfile --lang=docker
vendor/bin/shikiphp highlight Makefile --lang=make

langs

Wyświetl każdy identyfikator języka akceptowany przez pakiet, po jednym w wierszu.

Powłoka
vendor/bin/shikiphp langs

Lista zawiera 350 wierszy: 253 identyfikatorów dołączonych gramatyk w kolejności pakietu (nie alfabetycznej), a następnie ich 97 aliasów (js, cjs, mjs itd.). Identyfikatory gramatyk obejmują 18 gramatyk pomocniczych osadzanych przez inne gramatyki, takich jak vue-directives i es-tag-css; pełny katalog nazw i aliasów znajdziesz w sekcji Języki. Aby uzyskać listę alfabetyczną, użyj potoku z sort.

themes

Wyświetl każdy identyfikator dołączonego motywu, po jednym w wierszu, w kolejności alfabetycznej (65 motywów).

Powłoka
vendor/bin/shikiphp themes

Katalog nazw oraz typów jasny/ciemny znajdziesz w sekcji Motywy.

Pomoc i status zakończenia

Uruchom bez polecenia albo z -h / --help / help, aby wyświetlić instrukcję użycia.

Powłoka
vendor/bin/shikiphp --help
Sytuacja Wynik Status zakończenia
Sukces lub pomoc stdout 0
Nieznane polecenie Unknown command: <name> na stderr 1
highlight bez pliku lub nieistniejący plik wiersz instrukcji użycia na stderr 1
Nieznany język lub motyw nieobsłużony Shikiphp\Exceptions\Highlight (błąd krytyczny PHP ze śladem stosu) 255