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.