From 9e58857746b74ef3e122139f7db09509435bebc8 Mon Sep 17 00:00:00 2001
From: dralagen <dralagen@dralagen.fr>
Date: Sat, 26 Apr 2025 18:06:59 +0000
Subject: [PATCH] feat(favicon): add plugin to expose favicon from icon.png (#1942)
---
quartz/plugins/emitters/favicon.ts | 16 ++++++++++++++++
quartz/plugins/emitters/index.ts | 1 +
quartz.config.ts | 1 +
3 files changed, 18 insertions(+), 0 deletions(-)
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 @@
}),
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 { 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"
--
Gitblit v1.10.0