@unifast/node

ネイティブ Rust で動作する unifast Markdown/MDX コンパイラの Node.js バインディングです。

概要

@unifast/node は、Node.js で unifast を使うためのメインのエントリポイントです。napi-rs を経由してネイティブ Rust コンパイラを呼び出す compile() 関数を提供し、最大限のパフォーマンスを実現します。プラグインシステムにも対応しており、Rust のコンパイル処理の後に JavaScript で HAST 変換を適用できます。

インストール

ネイティブの 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() は次のパイプラインを実行します。

  1. プラグインの抽出 - plugins をそれ以外のオプションから分離します

  2. オプションのマージ - 各プラグインの options を compile オプションに深くマージします

  3. HAST の強制 - いずれかのプラグインが hastTransform を持つ場合、ネイティブ呼び出しで outputKind: "hast" を使用します

  4. ネイティブコンパイル - napi-rs を経由して Rust コンパイラを呼び出します

  5. HAST 変換 - 各プラグインの hastTransform を順番に適用します

  6. 出力の変換 - ユーザーが HAST 出力を要求していない場合、hastToHtml で HTML に戻します

組み込みプラグイン

次のプラグインファクトリ関数が同梱されており、別途のインストールは不要です。

gfmfrontmattersanitizesyntecttreeSittertocexternalLinksautolinkHeadingssmartypantswikiLinkcodeImportemojibreaksmathgithubAlertsectionizedirectivedefinitionListrubyAnnotationcjk

import { compile, gfm, frontmatter, syntect } from "@unifast/node";

const result = compile(source, {
  plugins: [gfm(), frontmatter(), syntect()],
});

エクスポート一覧

エクスポート種類説明
compilefunctionMarkdown/MDX を HTML または他のフォーマットにコンパイルする
gfm, frontmatter, …function組み込みプラグインファクトリ (合計 20 種類)
hastToHtmlfunctionHAST から HTML へのシリアライザ (@unifast/core から再エクスポート)
CompileOptionstypeコンパイル設定
CompileResulttypeコンパイル結果
UnifastPlugintypeプラグインインターフェース
TocEntrytype目次のエントリ
HastRoottypeHAST ルートノード
HastElementtypeHAST 要素ノード
HastTexttypeHAST テキストノード
HastNodetypeすべての HAST ノード型のユニオン
UnifastErrorclass基底エラークラス
ParseErrorclassパースエラークラス
CompileErrorclassコンパイルエラークラス