CLI
shikiphpにはbin/shikiphpに小さなコマンドラインツールが付属しています(プロジェクトではvendor/bin/shikiphpとしてインストールされます)。コマンドは3つあります。highlightは1つのファイルをHTMLに描画し、langsとthemesはバンドルの内容を一覧表示します。
highlight
ファイルをHTMLにハイライトし、標準出力に表示します。
vendor/bin/shikiphp highlight <file> [--lang=<lang>] [--theme=<theme>]
<file>— 読み込むパスです。既存のファイルである必要があります。標準入力は読み込みません。--lang— 言語IDまたはエイリアスです。省略すると、ファイル拡張子をそのままIDとして使います(拡張子がない場合はtxtにフォールバックします)。--theme— テーマIDです。既定値はgithub-darkです。
vendor/bin/shikiphp highlight src/App.php --lang=php --theme=nord
出力は、codeToHtmlが返す単一テーマの<pre class="shiki …">ブロックと同じで、その後に改行が続くため、そのままファイルにリダイレクトできます。
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を指定しない場合、拡張子がそのまま言語IDになります。拡張子自体が同梱IDまたはエイリアスであれば機能します。たとえばphp、js、ts、tsx、py、rs、go、md、yml、json、shなどです(一覧は言語を参照)。次の場合は機能しません。
MakefileやDockerfileのように拡張子がないファイルは、txtにフォールバックします。- 言語IDではない拡張子(
.txtなど)。
txtは同梱言語ではないため、現在はどちらの場合もUnknown language "txt"エラーで停止します(#3)。
これらのファイルでは--langを渡してください。
vendor/bin/shikiphp highlight Dockerfile --lang=docker
vendor/bin/shikiphp highlight Makefile --lang=make
langs
バンドルが言語として受け付けるすべてのIDを、1行に1つずつ表示します。
vendor/bin/shikiphp langs
一覧は350行です。バンドル順(アルファベット順ではありません)の同梱文法IDが253個並び、その後に97個のエイリアス(js、cjs、mjsなど)が続きます。文法IDには、他の文法に埋め込まれる補助文法が18個含まれます(vue-directivesやes-tag-cssなど)。名前とエイリアスを含む一覧は言語を参照してください。アルファベット順の一覧にするにはsortにパイプしてください。
themes
同梱されているすべてのテーマIDをアルファベット順に1行ずつ表示します(テーマは65種類)。
vendor/bin/shikiphp themes
名前とライト/ダークの種別を含む一覧はテーマを参照してください。
ヘルプと終了ステータス
コマンドを指定しない場合、または-h / --help / helpを指定すると、使い方を表示します。
vendor/bin/shikiphp --help
| 状況 | 出力先 | 終了ステータス |
|---|---|---|
| 成功またはヘルプ | stdout | 0 |
| 不明なコマンド | stderrのUnknown command: <name> |
1 |
highlightにファイルが指定されていない、またはファイルが存在しない |
stderrの使い方の行 | 1 |
| 不明な言語またはテーマ | 捕捉されないShikiphp\Exceptions\Highlight(スタックトレース付きのPHP致命的エラー) |
255 |