@unifast/highlight
Плагин подсветки синтаксиса на основе highlight.js для unifast через HAST-преобразования
Обзор
@unifast/highlight предоставляет подсветку синтаксиса на основе lowlight (обёртка над highlight.js). В отличие от встроенных плагинов syntect() и treeSitter(), которые выполняют подсветку в Rust, этот пакет применяет подсветку как HAST-преобразование на JavaScript после компиляции — предоставляя доступ к обширной экосистеме языков и тем highlight.js.
Установка
Быстрый старт
import { compile } from "@unifast/node";
import { highlight } from "@unifast/highlight";
const md = `
\`\`\`javascript
const x = 42;
console.log(x);
\`\`\`
`;
const result = compile(md, {
plugins: [highlight()],
});
console.log(result.output);
// Блоки кода подсвечены с помощью CSS-классов highlight.jsКак это работает
Компилятор на Rust создаёт HAST-вывод с неподсвеченными блоками
<pre><code>hastTransformплагинаhighlight()обходит HAST-деревоДля каждого элемента
<code>с классомlanguage-*lowlight подсвечивает кодПодсвеченные HAST-узлы заменяют исходных потомков
Поскольку это работает как HAST-преобразование, нативная подсветка Rust (syntect / treeSitter) должна быть отключена. Плагин автоматически устанавливает highlight.enabled: false в параметрах компиляции.
Сводка экспортов
| Экспорт | Вид | Описание |
|---|---|---|
highlight | функция | Создаёт HAST-плагин подсветки на основе highlight.js |