diff --git a/docs/plugins/Favicon.md b/docs/plugins/Favicon.md new file mode 100644 index 000000000..a6d4d4e1b --- /dev/null +++ b/docs/plugins/Favicon.md @@ -0,0 +1,19 @@ +--- +title: Favicon +tags: + - plugin/emitter +--- + +This plugin emits a `favicon.ico` into the `public` folder. It creates the favicon from `icon.png` located in the `quartz/static` folder. +The plugin resizes `icon.png` to 48x48px to make it as small as possible. + +> [!note] +> For information on how to add, remove or configure plugins, see the [[configuration#Plugins|Configuration]] page. + +This plugin has no configuration options. + +## API + +- Category: Emitter +- Function name: `Plugin.Favicon()`. +- Source: [`quartz/plugins/emitters/favicon.ts`](https://github.com/jackyzha0/quartz/blob/v4/quartz/plugins/emitters/favicon.ts). diff --git a/quartz/plugins/emitters/favicon.ts b/quartz/plugins/emitters/favicon.ts index c58322c63..b05f9309d 100644 --- a/quartz/plugins/emitters/favicon.ts +++ b/quartz/plugins/emitters/favicon.ts @@ -1,16 +1,22 @@ import sharp from "sharp" -import { joinSegments, QUARTZ, FilePath } from "../../util/path" +import { joinSegments, QUARTZ, FullSlug } from "../../util/path" import { QuartzEmitterPlugin } from "../types" +import { write } from "./helpers" +import { BuildCtx } from "../../util/ctx" 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) + const faviconContent = sharp(iconPath).resize(48, 48).toFormat("png") - yield dest + yield write({ + ctx: { argv } as BuildCtx, + slug: "favicon" as FullSlug, + ext: ".ico", + content: faviconContent, + }) }, async *partialEmit() {}, })