From c6f10b44f6878e76a416332f14e3681de8df40db Mon Sep 17 00:00:00 2001
From: Emile Bangma <github@emilebangma.com>
Date: Wed, 05 Mar 2025 23:54:11 +0000
Subject: [PATCH] feat(rss): configurable RSS feed URL (#1806)
---
quartz/plugins/emitters/contentIndex.ts | 25 ++++++++++++++++++++++++-
1 files changed, 24 insertions(+), 1 deletions(-)
diff --git a/quartz/plugins/emitters/contentIndex.ts b/quartz/plugins/emitters/contentIndex.ts
index 1c86b71..f4a1a91 100644
--- a/quartz/plugins/emitters/contentIndex.ts
+++ b/quartz/plugins/emitters/contentIndex.ts
@@ -7,6 +7,7 @@
import { toHtml } from "hast-util-to-html"
import { write } from "./helpers"
import { i18n } from "../../i18n"
+import DepGraph from "../../depgraph"
export type ContentIndex = Map<FullSlug, ContentDetails>
export type ContentDetails = {
@@ -24,6 +25,7 @@
enableRSS: boolean
rssLimit?: number
rssFullHtml: boolean
+ rssSlug: string
includeEmptyFiles: boolean
}
@@ -32,6 +34,7 @@
enableRSS: true,
rssLimit: 10,
rssFullHtml: false,
+ rssSlug: "index",
includeEmptyFiles: true,
}
@@ -92,6 +95,26 @@
opts = { ...defaultOptions, ...opts }
return {
name: "ContentIndex",
+ async getDependencyGraph(ctx, content, _resources) {
+ const graph = new DepGraph<FilePath>()
+
+ for (const [_tree, file] of content) {
+ const sourcePath = file.data.filePath!
+
+ graph.addEdge(
+ sourcePath,
+ joinSegments(ctx.argv.output, "static/contentIndex.json") as FilePath,
+ )
+ if (opts?.enableSiteMap) {
+ graph.addEdge(sourcePath, joinSegments(ctx.argv.output, "sitemap.xml") as FilePath)
+ }
+ if (opts?.enableRSS) {
+ graph.addEdge(sourcePath, joinSegments(ctx.argv.output, "index.xml") as FilePath)
+ }
+ }
+
+ return graph
+ },
async emit(ctx, content, _resources) {
const cfg = ctx.cfg.configuration
const emitted: FilePath[] = []
@@ -130,7 +153,7 @@
await write({
ctx,
content: generateRSSFeed(cfg, linkIndex, opts.rssLimit),
- slug: "index" as FullSlug,
+ slug: (opts?.rssSlug ?? "index") as FullSlug,
ext: ".xml",
}),
)
--
Gitblit v1.10.0