diff --git a/quartz.config.ts b/quartz.config.ts index 5264b64..f540609 100644 --- a/quartz.config.ts +++ b/quartz.config.ts @@ -87,6 +87,7 @@ const config: QuartzConfig = { Plugin.Assets(), Plugin.Static(), Plugin.NotFoundPage(), + // Comment out CustomOgImages to speed up build time Plugin.CustomOgImages(), ], }, diff --git a/quartz/processors/emit.ts b/quartz/processors/emit.ts index 0d3f8d7..aae119d 100644 --- a/quartz/processors/emit.ts +++ b/quartz/processors/emit.ts @@ -26,7 +26,7 @@ export async function emitContent(ctx: BuildCtx, content: ProcessedContent[]) { if (ctx.argv.verbose) { console.log(`[emit:${emitter.name}] ${file}`) } else { - log.updateText(`Emitting output files: ${chalk.gray(file)}`) + log.updateText(`Emitting output files: ${emitter.name} -> ${chalk.gray(file)}`) } } } else { @@ -36,7 +36,7 @@ export async function emitContent(ctx: BuildCtx, content: ProcessedContent[]) { if (ctx.argv.verbose) { console.log(`[emit:${emitter.name}] ${file}`) } else { - log.updateText(`Emitting output files: ${chalk.gray(file)}`) + log.updateText(`Emitting output files: ${emitter.name} -> ${chalk.gray(file)}`) } } } diff --git a/quartz/util/log.ts b/quartz/util/log.ts index 95015ac..4fcc240 100644 --- a/quartz/util/log.ts +++ b/quartz/util/log.ts @@ -22,7 +22,7 @@ export class QuartzLogger { readline.cursorTo(process.stdout, 0) process.stdout.write(`${this.spinnerChars[this.spinnerIndex]} ${this.spinnerText}`) this.spinnerIndex = (this.spinnerIndex + 1) % this.spinnerChars.length - }, 100) + }, 20) } } diff --git a/quartz/util/og.tsx b/quartz/util/og.tsx index c8ad663..96a14d5 100644 --- a/quartz/util/og.tsx +++ b/quartz/util/og.tsx @@ -6,8 +6,9 @@ import { JSXInternal } from "preact/src/jsx" import { FontSpecification, ThemeKey } from "./theme" import path from "path" import { QUARTZ } from "./path" -import { formatDate } from "../components/Date" -import { getDate } from "../components/Date" +import { formatDate, getDate } from "../components/Date" +import readingTime from "reading-time" +import { i18n } from "../i18n" const defaultHeaderWeight = [700] const defaultBodyWeight = [400] @@ -183,6 +184,12 @@ export const defaultImage: SocialImageOptions["imageStructure"] = ( const rawDate = getDate(cfg, fileData) const date = rawDate ? formatDate(rawDate, cfg.locale) : null + // Calculate reading time + const { minutes } = readingTime(fileData.text ?? "") + const readingTimeText = i18n(cfg.locale).components.contentMeta.readingTime({ + minutes: Math.ceil(minutes), + }) + // Get tags if available const tags = fileData.frontmatter?.tags ?? [] @@ -287,11 +294,12 @@ export const defaultImage: SocialImageOptions["imageStructure"] = ( borderTop: `1px solid ${cfg.theme.colors[colorScheme].lightgray}`, }} > - {/* Left side - Date */} + {/* Left side - Date and Reading Time */}