diff --git a/quartz/plugins/pageTypes/dispatcher.ts b/quartz/plugins/pageTypes/dispatcher.ts index 5c5fa75bc..f739b8c45 100644 --- a/quartz/plugins/pageTypes/dispatcher.ts +++ b/quartz/plugins/pageTypes/dispatcher.ts @@ -5,7 +5,7 @@ import { FullPageLayout } from "../../cfg" import { FullSlug, pathToRoot } from "../../util/path" import { ProcessedContent, defaultProcessedContent } from "../vfile" import { write } from "../emitters/helpers" -import { BuildCtx } from "../../util/ctx" +import { BuildCtx, trieFromAllFiles } from "../../util/ctx" import { StaticResources } from "../../util/resources" function getPageTypes(ctx: BuildCtx): QuartzPageTypePluginInstance[] { @@ -104,6 +104,9 @@ export const PageTypeDispatcher: QuartzEmitterPlugin> const cfg = ctx.cfg.configuration const allFiles = content.map((c) => c[1].data) + // Ensure trie is available for components that need folder hierarchy (e.g. FolderContent) + ctx.trie ??= trieFromAllFiles(allFiles) + for (const [tree, file] of content) { const slug = file.data.slug! const fileData = file.data @@ -140,6 +143,9 @@ export const PageTypeDispatcher: QuartzEmitterPlugin> const cfg = ctx.cfg.configuration const allFiles = content.map((c) => c[1].data) + // Rebuild trie on partial emit to reflect file changes + ctx.trie = trieFromAllFiles(allFiles) + const changedSlugs = new Set() for (const changeEvent of changeEvents) { if (!changeEvent.file) continue