HTML ソースコードのインデントを整形したかったので、rollup してブラウザでも動くコードを確認した。ast-util-from-html-isomorphic を使うと minify 後(gzip前)で約 40KB とコンパクトだった。
import {fromHtmlIsomorphic} from 'hast-util-from-html-isomorphic'
import {format} from 'hast-util-format'
import {toHtml} from 'hast-util-to-html'
export function formatHtml(html) {
const hast = fromHtmlIsomorphic(html)
format(hast)
return toHtml(hast)
}
上記を rollup したビルドでは、ブラウザ向けの hast-util-from-dom を使ってくれる。
Node.js 上では hast-util-from-html に切り替えてくれるので、同じコードのままブラウザ・Node 両対応できる。
自前で hast-util-from-parse5 を使った場合は、200KB ほどに大きくなる。