diff --git a/quartz/build.ts b/quartz/build.ts index ed166bb6c..452a2f1ae 100644 --- a/quartz/build.ts +++ b/quartz/build.ts @@ -203,8 +203,9 @@ async function partialRebuildFromEntrypoint( const emitterGraph = (await emitter.getDependencyGraph?.(ctx, processedFiles, staticResources)) ?? null - // emmiter may not define a dependency graph. nothing to update if so - if (emitterGraph) { + // only update the graph if the emitter plugin uses the changed file + // eg. Assets plugin ignores md files, so we skip updating the graph + if (emitterGraph?.hasNode(fp)) { // merge the new dependencies into the dep graph dependencies[emitter.name]?.updateIncomingEdgesForNode(emitterGraph, fp) } diff --git a/quartz/plugins/emitters/assets.ts b/quartz/plugins/emitters/assets.ts index 379cd5b2d..036b27da4 100644 --- a/quartz/plugins/emitters/assets.ts +++ b/quartz/plugins/emitters/assets.ts @@ -4,6 +4,13 @@ import path from "path" import fs from "fs" import { glob } from "../../util/glob" import DepGraph from "../../depgraph" +import { Argv } from "../../util/ctx" +import { QuartzConfig } from "../../cfg" + +const filesToCopy = async (argv: Argv, cfg: QuartzConfig) => { + // glob all non MD files in content folder and copy it over + return await glob("**", argv.directory, ["**/*.md", ...cfg.configuration.ignorePatterns]) +} export const Assets: QuartzEmitterPlugin = () => { return { @@ -15,7 +22,7 @@ export const Assets: QuartzEmitterPlugin = () => { const { argv, cfg } = ctx const graph = new DepGraph() - const fps = await glob("**", argv.directory, ["**/*.md", ...cfg.configuration.ignorePatterns]) + const fps = await filesToCopy(argv, cfg) for (const fp of fps) { const ext = path.extname(fp) @@ -30,9 +37,8 @@ export const Assets: QuartzEmitterPlugin = () => { return graph }, async emit({ argv, cfg }, _content, _resources): Promise { - // glob all non MD/MDX/HTML files in content folder and copy it over const assetsPath = argv.output - const fps = await glob("**", argv.directory, ["**/*.md", ...cfg.configuration.ignorePatterns]) + const fps = await filesToCopy(argv, cfg) const res: FilePath[] = [] for (const fp of fps) { const ext = path.extname(fp)