@unifast/node

Binding Node.js per il compilatore Markdown/MDX di unifast basato su Rust nativo

Panoramica

@unifast/node è il punto di ingresso principale per utilizzare unifast in Node.js. Fornisce la funzione compile() che invoca il compilatore Rust nativo tramite napi-rs per ottenere le massime prestazioni. Supporta inoltre il sistema di plugin, permettendo di applicare trasformazioni HAST in JavaScript dopo la fase di compilazione Rust.

Installazione

L’addon Rust nativo deve essere pre-compilato. Esegui cargo build -p unifast-bindings-node --release se il binario nativo non è disponibile.

Avvio rapido

import { compile } from "@unifast/node";

const result = compile("# Hello, **world**!");
console.log(result.output);
// <h1 id="hello-world">Hello, <strong>world</strong>!</h1>

Pipeline dei plugin

Quando vengono forniti dei plugin, compile() esegue la seguente pipeline:

  1. Estrazione dei plugin - Separa plugins dal resto delle opzioni

  2. Unione delle opzioni - Esegue il deep-merge delle options di ciascun plugin nelle opzioni di compilazione

  3. Forzatura di HAST - Se un plugin qualsiasi dispone di un hastTransform, la chiamata nativa usa outputKind: "hast"

  4. Compilazione nativa - Richiama il compilatore Rust tramite napi-rs

  5. Trasformazioni HAST - Applica in ordine il hastTransform di ciascun plugin

  6. Conversione dell’output - Se l’utente non ha richiesto un output HAST, riconverte in HTML tramite hastToHtml

Plugin integrati

Le seguenti funzioni factory di plugin sono incluse: non è necessaria alcuna installazione separata.

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()],
});

Riepilogo degli export

ExportTipoDescrizione
compilefunctionCompila Markdown/MDX in HTML o altri formati
gfm, frontmatter, …functionFactory dei plugin integrati (20 in totale)
hastToHtmlfunctionSerializzatore da HAST a HTML (riesportato da @unifast/core)
CompileOptionstypeConfigurazione della compilazione
CompileResulttypeRisultato della compilazione
UnifastPlugintypeInterfaccia dei plugin
TocEntrytypeVoce della tabella dei contenuti
HastRoottypeNodo radice HAST
HastElementtypeNodo elemento HAST
HastTexttypeNodo di testo HAST
HastNodetypeUnione di tutti i tipi di nodo HAST
UnifastErrorclassClasse di errore base
ParseErrorclassClasse di errore di parsing
CompileErrorclassClasse di errore di compilazione