CLI
shikiphp містить невеликий інструмент командного рядка в bin/shikiphp (у проєкті його встановлено як vendor/bin/shikiphp). Він має три команди: highlight виводить один файл у HTML, а langs і themes показують вміст пакета.
highlight
Підсвічує файл у HTML і виводить результат у stdout.
vendor/bin/shikiphp highlight <file> [--lang=<lang>] [--theme=<theme>]
<file>— шлях до файлу. Файл має існувати; стандартне введення не читається.--lang— ідентифікатор мови або псевдонім. Якщо його не вказано, розширення файлу використовується як є як ідентифікатор (а якщо розширення немає — застосовуєтьсяtxt).--theme— ідентифікатор теми. За замовчуванням —github-dark.
vendor/bin/shikiphp highlight src/App.php --lang=php --theme=nord
Результат — той самий блок <pre class="shiki …"> для однієї теми, який повертає codeToHtml, а за ним іде символ нового рядка, тож його можна одразу перенаправити у файл:
vendor/bin/shikiphp highlight src/App.php --theme=github-light > app.html
Команда не приймає інших параметрів. Щоб використати дві теми, трансформери чи будь-який інший параметр, викличте натомість PHP API.
Параметри й аргументи
Параметри мають бути у форматі --name=value. Інші аргументи, що починаються з --, ігноруються, а файлом вважається останній аргумент, який не починається з --. Тому --lang php file.rs підсвічує file.rs як Rust: --lang ігнорується, php замінюється на file.rs, а мову визначено за розширенням .rs.
Визначення мови
Якщо не вказано --lang, розширення стає ідентифікатором мови без змін. Це працює, коли саме розширення є вбудованим ідентифікатором або псевдонімом — php, js, ts, tsx, py, rs, go, md, yml, json, sh та багато інших (див. Мови). Але це не працює для:
- файлів без розширення, як-от
MakefileабоDockerfile, для яких використовуєтьсяtxt; - розширень, що не є ідентифікаторами мов, як-от
.txt.
txt не є вбудованою мовою, тому в обох випадках роботу зараз зупиняє помилка Unknown language "txt" (фатальна помилка #3).
Для таких файлів передайте --lang:
vendor/bin/shikiphp highlight Dockerfile --lang=docker
vendor/bin/shikiphp highlight Makefile --lang=make
langs
Виводить усі прийнятні пакетом ідентифікатори мов, по одному в рядку.
vendor/bin/shikiphp langs
У списку 350 рядків: спершу 253 вбудованих ідентифікаторів граматик у порядку пакета (не за абеткою), а потім 97 псевдонімів (js, cjs, mjs тощо). Ідентифікатори граматик охоплюють 18 допоміжних граматик, вбудованих в інші граматики, як-от vue-directives і es-tag-css; каталог назв і псевдонімів див. у розділі Мови. Щоб отримати список за абеткою, передайте вивід через sort.
themes
Виводить усі ідентифікатори вбудованих тем, по одному в рядку, за абеткою (65 тем).
vendor/bin/shikiphp themes
Каталог назв і світлих/темних типів див. у розділі Теми.
Довідка та код завершення
Запустіть без команди або з -h / --help / help, щоб вивести довідку з використання.
vendor/bin/shikiphp --help
| Ситуація | Вивід | Код завершення |
|---|---|---|
| Успіх або довідка | stdout | 0 |
| Невідома команда | Unknown command: <name> у stderr |
1 |
highlight без файлу або файл не існує |
рядок використання у stderr | 1 |
| Невідома мова або тема | необроблена Shikiphp\Exceptions\Highlight (фатальна помилка PHP зі стеком викликів) |
255 |