@lediv/build
v0.2.0
Published
Isomorphic site builder for Lediv projects
Maintainers
Readme
@lediv/build
Isomorphic site builder for Lediv projects. Turns a flat list of project source files (pages/, components/, public/) into the files of a static site: resolved component trees, evaluated template logic, injected font CSS, and copied public assets.
You probably want @lediv/vite-plugin. This package is published because the plugin depends on it, not because it is meant to be called directly. It is the build core both the plugin and Lediv's server-side publishing run, so a project built locally and the same project published from Lediv cannot drift; a test asserts they produce byte-identical page HTML.
It has no filesystem, no Vite, and no Node built-ins: sources go in as strings and bytes, built files come out the same way. That is what lets it run in a Cloudflare Worker and in a Vite build alike.
Usage
npm install @lediv/buildimport { buildSite } from '@lediv/build';
const { files, routes, fonts } = await buildSite(
[
{ name: 'pages/index.html', input: '<html>...</html>' },
{ name: 'components/Header.html', input: '<header>...</header>' },
{ name: 'public/logo.svg', input: bytes },
],
{ preloadFonts: true },
);Nothing is minified unless you pass a minify function. Page output is the HTML you authored.
Failures throw BuildSiteError, which carries a code and, where the failure belongs to one page, that page. The options, the result shape, the error codes and the exported helpers (buildPageHtml, contentTypeFor, pagePathToRoute, pagePathToOutputPath) all ship with type definitions; read those rather than a table here that can go stale.
A _redirects file at the root of the source is left out of the output rather than published as content. Interpreting it is the caller's job; the rule syntax is documented at https://lediv.com/docs/redirects.
License
MIT
