Incremental builds & caching

epresso builds are deterministic (same source + config → same output) and incremental (a content edit re-renders only the affected pages).

How it works

  • Every content entry has a digest over its body + data.
  • The build records a dependency graph: each route depends on the collections and entries it consumed (via get_collection / get_entry).
  • On the next build, routes whose dependencies haven't changed are reused from the cache instead of re-rendered.
  • The cache is dropped wholesale when the config or any template/component changes — including a file in a layer — so editing a component re-renders every route.

Cache

The incremental cache lives in .cache/ (gitignored; not removed by epresso clean). A clean build (epresso build --clean) re-renders everything so side-effect outputs (islands, assets, images) are regenerated.

Determinism

Outputs use content-hashed filenames and stable ordering, so identical source always produces identical output — ideal for caching and reproducible deploys.

epresso clean

Removes dist/ and the .cache build cache.