Aller au contenu

CLI

shikiphp fournit un petit outil en ligne de commande dans bin/shikiphp (installé sous vendor/bin/shikiphp dans votre projet). Il propose trois commandes : highlight met un fichier en évidence dans HTML, tandis que langs et themes répertorient le contenu du bundle.

highlight

Mettre un fichier en évidence dans HTML et afficher le résultat sur stdout.

Shell
vendor/bin/shikiphp highlight <file> [--lang=<lang>] [--theme=<theme>]
  • <file> — le chemin du fichier à lire. Il doit s’agir d’un fichier existant ; l’entrée standard n’est pas lue.
  • --lang — l’identifiant ou l’alias du langage. S’il est omis, l’extension du fichier est utilisée telle quelle comme identifiant (ou txt si le fichier n’a pas d’extension).
  • --theme — l’identifiant du thème. La valeur par défaut est github-dark.
Shell
vendor/bin/shikiphp highlight src/App.php --lang=php --theme=nord

La sortie est le même bloc <pre class="shiki …"> à thème unique que renvoie codeToHtml, suivi d’un saut de ligne, ce qui permet de la rediriger directement dans un fichier :

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

La commande n’accepte aucune autre option. Pour utiliser deux thèmes, des transformateurs ou toute autre option, appelez plutôt le API PHP.

Options et arguments

Les options doivent utiliser la forme --name=value. Tout autre argument commençant par -- est ignoré et le dernier argument ne commençant pas par -- est traité comme le fichier. Ainsi, --lang php file.rs met file.rs en évidence comme Rust : --lang est ignoré, php est remplacé par file.rs et le langage est déduit de l’extension .rs.

Détection du langage

Sans --lang, l’extension devient l’identifiant du langage, sans modification. Cela fonctionne lorsque l’extension correspond à un identifiant ou alias fourni dans le bundle : php, js, ts, tsx, py, rs, go, md, yml, json, sh et bien d’autres (voir Langages). Cela ne fonctionne pas pour :

  • les fichiers sans extension, comme Makefile ou Dockerfile, qui utilisent txt par défaut ;
  • les extensions qui ne correspondent pas à un identifiant de langage, comme .txt.

txt n’est pas un langage fourni dans le bundle : dans les deux cas, l’exécution s’arrête actuellement avec une erreur Unknown language "txt" (#3). Pour ces fichiers, passez --lang :

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

langs

Afficher un identifiant par ligne pour chaque langage accepté par le bundle.

Shell
vendor/bin/shikiphp langs

La liste comporte 350 lignes : les 253 identifiants de grammaire fournis dans le bundle, dans l’ordre du bundle (et non par ordre alphabétique), suivis de leurs 97 alias (js, cjs, mjs, etc.). Les identifiants de grammaire incluent 18 grammaires auxiliaires intégrées par d’autres grammaires, comme vue-directives et es-tag-css ; consultez Langages pour le catalogue des noms et alias. Utilisez sort pour obtenir une liste alphabétique.

themes

Afficher un identifiant par ligne pour chaque thème fourni dans le bundle, par ordre alphabétique (65 thèmes).

Shell
vendor/bin/shikiphp themes

Consultez Thèmes pour le catalogue avec les noms et les types clair/sombre.

Aide et code de sortie

Lancez la commande sans argument, ou avec -h / --help / help, pour afficher l’aide.

Shell
vendor/bin/shikiphp --help
Situation Sortie Code de sortie
Réussite ou aide stdout 0
Commande inconnue Unknown command: <name> sur stderr 1
highlight sans fichier ou fichier inexistant ligne d’utilisation sur stderr 1
Langage ou thème inconnu Shikiphp\Exceptions\Highlight non interceptée (erreur fatale PHP avec trace de pile) 255