doc(favicon): add documentation of favicon plugin (#1948)
* doc(favicon): add documentation of favicon plugin
* doc(favicon): add missing link to configuration page
* fix(favicon): build on public folder don't created
1 files added
1 files modified
| New file |
| | |
| | | --- |
| | | 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). |
| | |
| | | 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() {}, |
| | | }) |