diff --git a/quartz/plugins/emitters/build.ts b/quartz/plugins/emitters/build.ts new file mode 100644 index 000000000..7b58862a9 --- /dev/null +++ b/quartz/plugins/emitters/build.ts @@ -0,0 +1,34 @@ +import { QuartzComponent } from "../../components/types" +import DepGraph from "../../depgraph" +import { BuildCtx } from "../../util/ctx" +import { FilePath } from "../../util/path" +import { StaticResources } from "../../util/resources" +import { QuartzEmitterPlugin, QuartzEmitterPluginInstance } from "../types" +import { ProcessedContent } from "../vfile" + +interface Options { + emitter: QuartzEmitterPluginInstance +} + +export const BuildOnly: QuartzEmitterPlugin = (opts) => { + const emitter = opts?.emitter as QuartzEmitterPluginInstance + return { + name: `BuildOnly<${emitter.name}>`, + getQuartzComponents(ctx: BuildCtx): QuartzComponent[] { + if (ctx.argv.serve) return [] + return emitter.getQuartzComponents(ctx) + }, + async getDependencyGraph( + ctx: BuildCtx, + content: ProcessedContent[], + resources: StaticResources, + ) { + if (ctx.argv.serve) return new DepGraph() + return await emitter.getDependencyGraph!(ctx, content, resources) + }, + async emit(ctx: BuildCtx, content: ProcessedContent[], resources: StaticResources) { + if (ctx.argv.serve) return [] + return emitter.emit(ctx, content, resources) + }, + } +} diff --git a/quartz/plugins/emitters/index.ts b/quartz/plugins/emitters/index.ts index bc378c47b..b886b266d 100644 --- a/quartz/plugins/emitters/index.ts +++ b/quartz/plugins/emitters/index.ts @@ -8,3 +8,4 @@ export { Static } from "./static" export { ComponentResources } from "./componentResources" export { NotFoundPage } from "./404" export { CNAME } from "./cname" +export { BuildOnly } from "./build"