feat(favicon): add plugin to expose favicon from icon.png (#1942)
* feat(favicon): add plugin to expose favicon from icon.png
* chore(favicon): clean up formatting and remove unnecessary line breaks
1 files added
2 files modified
| | |
| | | }), |
| | | Plugin.Assets(), |
| | | Plugin.Static(), |
| | | Plugin.Favicon(), |
| | | Plugin.NotFoundPage(), |
| | | // Comment out CustomOgImages to speed up build time |
| | | Plugin.CustomOgImages(), |
| New file |
| | |
| | | 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() {}, |
| | | }) |
| | |
| | | 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" |