diff --git a/gulpfile.esm.js b/gulpfile.esm.js
index 036639e5acc3d2713b6497247223bde1f0f607a2..7551cceef84927a3642964a71723adfda89fc05e 100644
--- a/gulpfile.esm.js
+++ b/gulpfile.esm.js
@@ -1,4 +1,4 @@
-import { dest, parallel, series, src, watch } from "gulp";
+import { dest, lastRun, parallel, series, src, watch } from "gulp";
 import del from "del";
 import drawio from "./lib/drawio";
 import index from "./lib/index";
@@ -19,10 +19,17 @@ const PDF_GLOB = `${DEST_DIR}/**/index.html`;
 
 export const clean = () => del(`${DEST_DIR}/**`, { force: true });
 
-export const assets = () => src(ASSET_GLOB).pipe(dest(DEST_DIR));
+export const assets = () =>
+  src(ASSET_GLOB, { since: lastRun(assets) }).pipe(dest(DEST_DIR));
 export const prez = () =>
-  src(PREZ_GLOB).pipe(index()).pipe(pandoc()).pipe(dest(DEST_DIR));
-export const graphs = () => src(GRAPH_GLOB).pipe(drawio()).pipe(dest(DEST_DIR));
+  src(PREZ_GLOB, { since: lastRun(prez) })
+    .pipe(index())
+    .pipe(pandoc())
+    .pipe(dest(DEST_DIR));
+export const graphs = () =>
+  src(GRAPH_GLOB, { since: lastRun(graphs) })
+    .pipe(drawio())
+    .pipe(dest(DEST_DIR));
 export const pdf = () => src(PDF_GLOB).pipe(wkhtmltopdf()).pipe(dest(DEST_DIR));
 
 export const build = series(clean, parallel(assets, prez, graphs), pdf);