diff --git a/quartz.config.ts b/quartz.config.ts index efe9648..b3db3d6 100644 --- a/quartz.config.ts +++ b/quartz.config.ts @@ -86,6 +86,7 @@ const config: QuartzConfig = { }), Plugin.Assets(), Plugin.Static(), + Plugin.Favicon(), Plugin.NotFoundPage(), // Comment out CustomOgImages to speed up build time Plugin.CustomOgImages(), diff --git a/quartz/plugins/emitters/favicon.ts b/quartz/plugins/emitters/favicon.ts new file mode 100644 index 0000000..c58322c --- /dev/null +++ b/quartz/plugins/emitters/favicon.ts @@ -0,0 +1,16 @@ +import sharp from "sharp" +import { joinSegments, QUARTZ, FilePath } from "../../util/path" +import { QuartzEmitterPlugin } from "../types" + +export const Favicon: QuartzEmitterPlugin = () => ({ + name: "Favicon", + async *emit({ argv }) { + const iconPath = joinSegments(QUARTZ, "static", "icon.png") + const dest = joinSegments(argv.output, "favicon.ico") as FilePath + + await sharp(iconPath).resize(48, 48).toFormat("png").toFile(dest) + + yield dest + }, + async *partialEmit() {}, +}) diff --git a/quartz/plugins/emitters/index.ts b/quartz/plugins/emitters/index.ts index 842ffb0..d2de2ed 100644 --- a/quartz/plugins/emitters/index.ts +++ b/quartz/plugins/emitters/index.ts @@ -5,6 +5,7 @@ export { ContentIndex as ContentIndex } from "./contentIndex" export { AliasRedirects } from "./aliases" export { Assets } from "./assets" export { Static } from "./static" +export { Favicon } from "./favicon" export { ComponentResources } from "./componentResources" export { NotFoundPage } from "./404" export { CNAME } from "./cname"