Gå til indhold

Kom godt i gang

Installation

Shell
composer require shikiphp/shikiphp

shikiphp kræver PHP 8.2 eller nyere med ext-json og ext-mbstring — begge aktiveret i næsten alle PHP-versioner. Ikke andet: ingen Node, ingen indbygget Oniguruma-binding og ingen ekstra udvidelser.

Din første blok

Den statiske Shikiphp-facade er den hurtigste måde at komme i gang på. Angiv din kode, et sprog-id og et tema-id:

PHP
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 returnerer en komplet, selvstændigt stylet <pre class="shiki …">-blok. Forgrunds- og baggrundsfarverne skrives direkte på <pre>, så den gengives korrekt uden et ekstra typografiark.

Dobbelte temaer (lyst og mørkt)

I stedet for et enkelt theme skal du angive et themes-kort. shikiphp udsender CSS-variabler (som Shiki), så en enkelt gengivet blok tilpasser sig lys og mørk tilstand:

PHP
use Shikiphp\Shikiphp;

$code = 'const answer: number = 42';

echo Shikiphp::codeToHtml($code, [
    'lang'   => 'ts',
    'themes' => ['light' => 'github-light', 'dark' => 'github-dark'],
]);

Som standard er farverne fra temaet light de direkte standardværdier, og dark bliver gjort tilgængeligt via --shiki-dark-variabler. Aktivér det mørke tema med en smule CSS — den samme kodeblok, som Shiki dokumenterer:

CSS
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ælge, hvilket tema der skal være den direkte standard, med indstillingen defaultColor, eller indstille defaultColor: false til kun at udsende variabler.

Sprog-id'er og aliaser

Der henvises til sprog med deres Shiki-id eller alias — php, ts, js, rust, python, html osv. Se Sprog for at få vist alt, der følger med, og Temaer for tema-id'erne.

Genbrug af fremhævningsværktøjet

Facaden opretter og cachelagrer dovent et inkluderet Highlighter, så gentagne kald til Shikiphp::codeToHtml genbruger de samme grammatik- og temacacher. Hvis du har brug for det mere avancerede API (HAST-output, brugerdefinerede grammatikker, tokennet), kan du hente instansen direkte:

PHP
use Shikiphp\Shikiphp;

$code = 'fn main() {}';

$highlighter = Shikiphp::highlighter();
$hast = $highlighter->codeToHast($code, ['lang' => 'rust', 'theme' => 'nord']);

Se API for den fulde grænseflade.