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 |