Ga naar de inhoud

Aan de slag

Installeren

Shell
composer require shikiphp/shikiphp

shikiphp vereist PHP 8.2 of hoger met ext-json en ext-mbstring — beide zijn ingeschakeld in vrijwel elke PHP-build. Verder niets: geen Node, geen native Oniguruma-binding en geen extra extensies.

Uw eerste blok

De statische Shikiphp-facade is de snelste manier om aan de slag te gaan. Geef uw code, een taal- id en een thema-id door:

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 retourneert een compleet, zelfopgemaakt <pre class="shiki …">-blok. De voorgrond- en achtergrondkleuren staan inline op het <pre>, zodat het correct wordt weergegeven zonder extra stylesheet.

Dubbele thema's (licht en donker)

Geef in plaats van één theme een themes-map door. shikiphp genereert CSS-variabelen (zoals Shiki), zodat één weergegeven blok zich aan de lichte en donkere modus aanpast:

PHP
use Shikiphp\Shikiphp;

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

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

Standaard zijn de kleuren van het light-thema de inline standaardwaarden en wordt dark beschikbaar gemaakt via --shiki-dark-variabelen. Activeer het donkere thema met een kleine hoeveelheid CSS — hetzelfde fragment dat Shiki documenteert:

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;
}

U kunt met de optie defaultColor kiezen welk thema de inline standaard is, of defaultColor: false instellen om alleen variabelen te genereren.

Taal-id's en aliassen

Talen worden aangeduid met hun Shiki-id of alias — php, ts, js, rust, python, html enzovoort. Zie Talen voor informatie over alle meegeleverde talen en Thema's voor de thema-id's.

De markeerder hergebruiken

De facade maakt indien nodig een meegeleverde Highlighter aan en slaat die op in de cache, zodat herhaalde aanroepen van Shikiphp::codeToHtml dezelfde grammatica- en themacaches hergebruiken. Als u de uitgebreidere API nodig hebt (HAST-uitvoer, aangepaste grammatica's, tokenrasters), haal de instantie dan rechtstreeks op:

PHP
use Shikiphp\Shikiphp;

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

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

Zie API voor het volledige overzicht.