hyogen-md

0.10.0

renderServer

SSR や Node 上でのレンダリングに使う API です。serverContext でサーバー専用のデータを渡せます。

import { renderServer } from '@b4moss/hyogen-md'

シグネチャ

function renderServer(
  source: string | { path: string },
  context?: HyogenContext,
  options?: ServerRenderOptions,
): Promise<RenderResult>

引数

source

レンダリング対象です。

  • 文字列 — Markdown ソースを直接渡す
  • { path: string } — ファイルパスを指定(loader で読み込む)

context

テンプレート変数として使うオブジェクトです。&#123;&#123; name &#125;&#125; などが参照します。front matter や component の props と合成され、後から来た値が同名を上書きします。

options

オプションデフォルト説明
serverContextHyogenContextサーバー専用の変数。テンプレートから参照可能
loaderLoadercreateNodeLoader()ファイル読み込み関数
rootstringドキュメントルートの上書き
preserveFrontMatterbooleanfalse出力に front matter を残す
preserveHgCommentsbooleanfalse出力に hyogen コメントを残す

戻り値

type RenderResult = {
  markdown: string    // レンダリング後の Markdown
  warnings: HyogenWarning[]
}

エラーが発生した場合は 例外を投げ、レンダリングを中断します。警告のみの場合は warnings に入り、処理は続行します。

インラインソース

const result = await renderServer(
  '# {{ title }}',
  { title: 'Hello' },
)

ファイル + serverContext

const result = await renderServer(
  { path: './pages/index.md' },
  { title: '公開データ' },
  {
    serverContext: { apiKey: 'secret' },
    loader: createNodeLoader(),
  },
)

serverContext の値もテンプレート変数として参照できます。クライアントに漏らしたくない秘密情報は、こちらに入れて renderClient では渡さない運用を推奨します。

関連