Перейти до вмісту

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