Kom igång
Installation
composer require shikiphp/shikiphp
shikiphp kräver PHP 8.2 eller senare med ext-json och ext-mbstring — båda
är aktiverade i nästan alla PHP-byggen. Inget annat behövs: ingen Node, ingen inbyggd
Oniguruma-bindning och inga ytterligare tillägg.
Ditt första kodblock
Den statiska fasaden Shikiphp är den snabbaste vägen att komma igång. Ange koden, ett språk-id
och ett tema-id:
use Shikiphp\Shikiphp;
$html = Shikiphp::codeToHtml(<<<'PHP'
<?php
function greet(string $name): string {
return "Hello, {$name}!";
}
PHP, [
'lang' => 'php',
'theme' => 'github-dark',
]);
echo $html;
codeToHtml returnerar ett komplett <pre class="shiki …">-block med egen stil. Förgrunds- och bakgrundsfärgerna anges direkt på <pre>, så det renderas
korrekt utan någon extra stilmall.
Två teman (ljust och mörkt)
I stället för ett enda theme skickar du in en themes-karta. shikiphp skapar variabler för CSS (som Shiki), så att ett och samma renderade block anpassar sig till ljust och mörkt läge:
use Shikiphp\Shikiphp;
$code = 'const answer: number = 42';
echo Shikiphp::codeToHtml($code, [
'lang' => 'ts',
'themes' => ['light' => 'github-light', 'dark' => 'github-dark'],
]);
Som standard är färgerna från temat light inbäddade standardvärden, och dark exponeras genom --shiki-dark-variabler. Aktivera det mörka temat med lite
CSS — samma kodsnutt som Shiki beskriver:
html.dark .shiki,
html.dark .shiki span {
color: var(--shiki-dark) !important;
background-color: var(--shiki-dark-bg) !important;
/* and font styles */
font-style: var(--shiki-dark-font-style) !important;
font-weight: var(--shiki-dark-font-weight) !important;
text-decoration: var(--shiki-dark-text-decoration) !important;
}
Du kan välja vilket tema som ska vara inbäddat standardvärde med alternativet
defaultColor eller ange defaultColor: false
för att endast skapa variabler.
Språk-id:n och alias
Språk hänvisas till med sitt språk-id eller alias i Shiki — php, ts, js,
rust, python, html och så vidare. Se Språk för hur du
listar allt som ingår, och Teman för tema-id:n.
Återanvända markeraren
Fasaden skapar och cachar en paketerad Highlighter vid behov, så upprepade anrop
till Shikiphp::codeToHtml återanvänder samma grammatik- och temacacher. Om du behöver de mer omfattande funktionerna i API (HAST-resultat, anpassade grammatiker, tokengridar) hämtar du instansen direkt:
use Shikiphp\Shikiphp;
$code = 'fn main() {}';
$highlighter = Shikiphp::highlighter();
$hast = $highlighter->codeToHast($code, ['lang' => 'rust', 'theme' => 'nord']);
Se API för en fullständig översikt över funktionerna.