Lewati ke konten

Memulai

Instalasi

Shell
composer require shikiphp/shikiphp

shikiphp memerlukan PHP 8.2 atau lebih baru dengan ext-json dan ext-mbstring — keduanya aktif di hampir setiap build PHP. Tidak ada yang lain: tanpa Node, tanpa binding Oniguruma native, tanpa ekstensi tambahan.

Blok pertama Anda

Facade statis Shikiphp adalah cara tercepat untuk memulai. Berikan kode Anda, id bahasa, dan id tema:

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 mengembalikan blok <pre class="shiki …"> lengkap dengan gaya mandiri. Warna latar depan dan latar belakang ditulis secara inline pada <pre>, sehingga blok ditampilkan dengan benar tanpa stylesheet tambahan.

Tema ganda (terang dan gelap)

Alih-alih satu theme, berikan peta themes. shikiphp menghasilkan variabel CSS (seperti Shiki) agar satu blok yang dirender menyesuaikan dengan mode terang dan gelap:

PHP
use Shikiphp\Shikiphp;

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

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

Secara default, warna tema light menjadi nilai inline bawaan dan dark diekspor melalui variabel --shiki-dark. Aktifkan tema gelap dengan sedikit CSS — cuplikan yang sama seperti yang didokumentasikan Shiki:

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

Anda dapat memilih tema yang menjadi nilai inline bawaan dengan opsi defaultColor, atau mengatur defaultColor: false agar hanya variabel yang dihasilkan.

Id bahasa dan alias

Bahasa dirujuk berdasarkan id Shiki atau aliasnya — php, ts, js, rust, python, html, dan seterusnya. Lihat Bahasa untuk cara mencantumkan semua yang disertakan, dan Tema untuk id tema.

Menggunakan kembali penyorot

Facade secara malas membuat dan menyimpan penyorot Highlighter bawaan, sehingga pemanggilan berulang ke Shikiphp::codeToHtml menggunakan kembali cache tata bahasa dan tema yang sama. Jika Anda memerlukan API yang lebih lengkap (keluaran HAST, tata bahasa kustom, kisi token), ambil instance-nya secara langsung:

PHP
use Shikiphp\Shikiphp;

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

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

Lihat API untuk API lengkapnya.