Saltar al contenido

CLI

shikiphp incluye una pequeña herramienta de línea de comandos en bin/shikiphp (instalada como vendor/bin/shikiphp en tu proyecto). Tiene tres comandos: highlight muestra un archivo en HTML, mientras que langs y themes enumeran el contenido del paquete.

highlight

Resalta un archivo en HTML y lo imprime en stdout.

Shell
vendor/bin/shikiphp highlight <file> [--lang=<lang>] [--theme=<theme>]
  • <file> — la ruta del archivo que se va a leer. Debe ser un archivo existente; no se lee la entrada estándar.
  • --lang — el id o alias del idioma. Si se omite, se usa la extensión del archivo tal cual como id (si no hay extensión, se usa txt).
  • --theme — el id del tema. El valor predeterminado es github-dark.
Shell
vendor/bin/shikiphp highlight src/App.php --lang=php --theme=nord

El resultado es el mismo bloque <pre class="shiki …"> de tema único que devuelve codeToHtml, seguido de un salto de línea, para poder redirigirlo directamente a un archivo:

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

El comando no acepta más opciones. Para usar dos temas, transformadores o cualquier otra opción, llama a PHP API.

Opciones y argumentos

Las opciones deben tener el formato --name=value. Se ignora cualquier otro argumento que empiece por --, y se toma como archivo el último argumento que no empiece por --. Por tanto, --lang php file.rs resalta file.rs como Rust: se ignora --lang, php se sustituye por file.rs y el idioma se deduce de la extensión .rs.

Deducción del idioma

Sin --lang, la extensión se convierte en el id del idioma sin cambios. Esto funciona si la extensión es un id o alias incluido: php, js, ts, tsx, py, rs, go, md, yml, json, sh y muchos más (consulta Idiomas). No funciona con:

  • archivos sin extensión, como Makefile o Dockerfile, que usan txt como alternativa;
  • extensiones que no son ids de idioma, como .txt.

txt no es un idioma incluido, por lo que ambos casos terminan actualmente con un error Unknown language "txt" (#3). Usa --lang con estos archivos:

Shell
vendor/bin/shikiphp highlight Dockerfile --lang=docker
vendor/bin/shikiphp highlight Makefile --lang=make

langs

Muestra, uno por línea, todos los ids de idioma que acepta el paquete.

Shell
vendor/bin/shikiphp langs

La lista tiene 350 líneas: los 253 ids de gramática incluidos, en el orden del paquete (no alfabético), seguidos de sus 97 alias (js, cjs, mjs, etc.). Entre los ids de gramática hay 18 gramáticas auxiliares que se incrustan en otras, como vue-directives y es-tag-css; consulta Idiomas para ver el catálogo con nombres y alias. Usa sort para ordenarlos alfabéticamente.

themes

Muestra todos los ids de los temas incluidos, uno por línea y en orden alfabético (65 temas).

Shell
vendor/bin/shikiphp themes

Consulta Temas para ver el catálogo con nombres y tipos claros/oscuros.

Ayuda y código de salida

Ejecuta el comando sin argumentos o con -h / --help / help para mostrar las instrucciones de uso.

Shell
vendor/bin/shikiphp --help
Situación Salida Código de salida
Éxito o ayuda stdout 0
Comando desconocido Unknown command: <name> en stderr 1
highlight sin archivo o archivo inexistente línea de uso en stderr 1
Idioma o tema desconocido Shikiphp\Exceptions\Highlight sin capturar (error fatal de PHP con seguimiento de pila) 255