hastx
Create hast syntax trees using JSX
Hast is an abstract syntax tree format for hypertext, and it is used by the Rehype ecosystem as a universal representation for HTML documents.
This module provides a way to create hast trees using JSX which are suitable as inputs to any Rehype pipeline.
For example, the following code uses JSX to create a section of HTML and then
pipes it through the rehype-slug and
rehype-autolink-headings to automatically add
internal ids and links to each h1
element
import rehypeSlug from "rehype-slug";
import rehypeAutoLinkHeadings from "rehype-autolink-headings";
import { pipe } from "lodash/fp";
let enhanced = pipe(rehypeSlug(), rehypeAutoLinkHeandings())(
<section>
<h1>Chapter 1</h1>
<p>It was the best of times. It was the worst of times...</p>
</section>,
);
This package only supports the modern “automatic” JSX Transform. How to
configure this is highly dependent on your compiler, but generally involve
setting the jsxImportSource
attribute to “hastx” either via a settings file or
a compiler pragma. The following list is non-exhaustive.
Deno
Add the following to your deno.json
:
{
"compilerOptions": {
"jsx": "react-jsx",
"jsxImportSource": "hastx"
},
"imports": {
"hastx/jsx-runtime": "https://deno.land/x/hastx/jsx-runtime.ts"
}
}
TypeScript
Install the “hastx” package from npm, and configure your jsxImportSource
{
"compilerOptions": {
"jsx": "react-jsx",
"jsxImportSource": "hastx"
}
}