@unifast/node
Биндинг Node.js для компилятора Markdown/MDX unifast на основе нативного Rust
Обзор
@unifast/node — основная точка входа для использования unifast в Node.js. Он предоставляет функцию compile(), которая вызывает нативный компилятор на Rust через napi-rs для максимальной производительности. Также он поддерживает систему плагинов, позволяя применять HAST-преобразования в JavaScript после шага компиляции на Rust.
Установка
Нативное дополнение на Rust должно быть предварительно собрано. Выполните
cargo build -p unifast-bindings-node --release, если нативный бинарник недоступен.
Быстрый старт
import { compile } from "@unifast/node";
const result = compile("# Hello, **world**!");
console.log(result.output);
// <h1 id="hello-world">Hello, <strong>world</strong>!</h1>Конвейер плагинов
Когда передаются плагины, compile() выполняет следующий конвейер:
Извлечение плагинов — отделяет
pluginsот остальных параметровСлияние параметров — глубокое слияние
optionsкаждого плагина с параметрами компиляцииПринудительный HAST — если у какого-либо плагина есть
hastTransform, нативный вызов используетoutputKind: "hast"Нативная компиляция — вызов компилятора на Rust через napi-rs
HAST-преобразования — последовательное применение
hastTransformкаждого плагинаПреобразование вывода — если пользователь не запросил вывод HAST, результат конвертируется обратно в HTML через
hastToHtml
Встроенные плагины
Следующие фабричные функции плагинов включены в пакет — отдельная установка не требуется:
gfm, frontmatter, sanitize, syntect, treeSitter, toc, externalLinks, autolinkHeadings, smartypants, wikiLink, codeImport, emoji, breaks, math, githubAlert, sectionize, directive, definitionList, rubyAnnotation, cjk
import { compile, gfm, frontmatter, syntect } from "@unifast/node";
const result = compile(source, {
plugins: [gfm(), frontmatter(), syntect()],
});Сводка экспортов
| Экспорт | Вид | Описание |
|---|---|---|
compile | функция | Компилирует Markdown/MDX в HTML и другие форматы |
gfm, frontmatter, … | функция | Фабрики встроенных плагинов (всего 20) |
hastToHtml | функция | Сериализатор HAST в HTML (реэкспорт из @unifast/core) |
CompileOptions | тип | Конфигурация компиляции |
CompileResult | тип | Результат компиляции |
UnifastPlugin | тип | Интерфейс плагина |
TocEntry | тип | Элемент оглавления |
HastRoot | тип | Корневой узел HAST |
HastElement | тип | Узел-элемент HAST |
HastText | тип | Текстовый узел HAST |
HastNode | тип | Объединение всех типов узлов HAST |
UnifastError | класс | Базовый класс ошибок |
ParseError | класс | Класс ошибок парсинга |
CompileError | класс | Класс ошибок компиляции |