koenig/kg-lexical-html-renderer/README.md
Renders a serialized Lexical editor state to an HTML string.
This library differs from Lexical's own lexical-html package in a few ways:
<table> elements in place of modern HTML structurenpm install @tryghost/kg-lexical-html-renderer
Basic usage:
const {LexicalHTMLRenderer} = require('@tryghost/kg-lexical-html-renderer');
const renderer = new LexicalHTMLRenderer();
const lexicalState = '{...}';
const html = await renderer.render(lexicalState);
render() is async and returns a string.
Options can be passed in as the second argument to .render().
const html = await renderer.render(lexicalState, {target: 'email'});
| Option | Values |
|---|---|
target | 'html' (default), 'email' |
Options are passed through to each node's renderer in kg-default-nodes,
which accepts further keys — siteUrl, postUrl, imageOptimization and
others — for URL resolution and image handling.
This package is part of the Ghost monorepo
and resolves through the pnpm workspace — there is no linking or per-package
install step. Run pnpm setup in the monorepo root, then work in
koenig/kg-lexical-html-renderer.
ghost/core resolves this package via a source export condition pointing at
src/, so a change here is picked up by a running Ghost dev server without a
rebuild. Run pnpm dev for a watching tsc build when you need the compiled
output.
Changes usually need to be made alongside kg-default-nodes, which owns the per-node rendering this package drives.
See the Koenig README for the shared build, test and release workflow.
pnpm test:unit runs the unit testspnpm test runs the unit and type tests, including coverage thresholdspnpm lint runs the lint checksCopyright (c) 2013-2026 Ghost Foundation - Released under the MIT license.