hyogen-md

0.10.0

Install

npm install @b4moss/hyogen-md

The package ships two entry points:

EntryUse case
@b4moss/hyogen-mdNode — SSR, SSG, and server rendering (renderServer, build, loaders)
@b4moss/hyogen-md/clientBrowser — client-side rendering (renderClient)

Quick start (server)

Use renderServer when you run on Node (SSR or SSG). A default file-system loader is used when you omit options.loader.

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

const { markdown, warnings } = await renderServer(
  '# Hello {{ name }}',
  { name: 'world' },
)

console.log(markdown)
// # Hello world

Render a file by path:

const result = await renderServer({ path: './pages/index.md' }, {
  title: 'My site',
})

Pass secrets only through serverContext — they are merged into the render context on the server but must never be sent to the client bundle:

await renderServer('./page.md', { title: 'Public' }, {
  serverContext: { apiKey: process.env.API_KEY },
})

Quick start (client)

Use renderClient in the browser. You must provide a loader that returns source text for each path. The library does not fetch files on its own in the browser.

import { renderClient } from '@b4moss/hyogen-md/client'

const files: Record<string, string> = {
  'index.md': '# Hello {{ name }}',
}

const loader = async (path: string) => {
  const source = files[path]
  if (!source) throw new Error(`missing: ${path}`)
  return source
}

const { markdown } = await renderClient(
  { path: 'index.md' },
  { name: 'world' },
  { loader },
)

Next steps

  • API referencerenderServer, renderClient, build, loaders, diagnostics
  • Template syntax&#123;&#123; &#125;&#125;, @hg blocks, includes, components
  • Playground — try templates in the browser