feat: add rss feed

This commit is contained in:
Devin Haska 2024-02-19 21:33:33 -08:00
parent fff87fcfcd
commit aae457a611
4 changed files with 62 additions and 0 deletions

View file

@ -1,3 +1,5 @@
const pluginRss = require("@11ty/eleventy-plugin-rss");
const { const {
postsByTag, postsByTag,
catalogueByType, catalogueByType,
@ -22,6 +24,9 @@ const liteYoutube = require("./config/shortcodes/youtube.js");
module.exports = (eleventyConfig) => { module.exports = (eleventyConfig) => {
eleventyConfig.addWatchTarget("./src/assets"); eleventyConfig.addWatchTarget("./src/assets");
// --------------------- Plugins ---------------------
eleventyConfig.addPlugin(pluginRss);
// --------------------- Custom Template Languages --------------------- // --------------------- Custom Template Languages ---------------------
eleventyConfig.addPlugin( eleventyConfig.addPlugin(
require("./config/template-languages/css-config.js"), require("./config/template-languages/css-config.js"),

27
package-lock.json generated
View file

@ -11,6 +11,7 @@
"devDependencies": { "devDependencies": {
"@11ty/eleventy": "^2.0.1", "@11ty/eleventy": "^2.0.1",
"@11ty/eleventy-img": "^3.1.8", "@11ty/eleventy-img": "^3.1.8",
"@11ty/eleventy-plugin-rss": "^1.2.0",
"autoprefixer": "^10.4.17", "autoprefixer": "^10.4.17",
"cssnano": "^6.0.3", "cssnano": "^6.0.3",
"dayjs": "^1.11.10", "dayjs": "^1.11.10",
@ -162,6 +163,21 @@
"url": "https://opencollective.com/11ty" "url": "https://opencollective.com/11ty"
} }
}, },
"node_modules/@11ty/eleventy-plugin-rss": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@11ty/eleventy-plugin-rss/-/eleventy-plugin-rss-1.2.0.tgz",
"integrity": "sha512-YzFnSH/5pObcFnqZ2sAQ782WmpOZHj1+xB9ydY/0j7BZ2jUNahn53VmwCB/sBRwXA/Fbwwj90q1MLo01Ru0UaQ==",
"dev": true,
"dependencies": {
"debug": "^4.3.4",
"posthtml": "^0.16.6",
"posthtml-urls": "1.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/11ty"
}
},
"node_modules/@11ty/eleventy-utils": { "node_modules/@11ty/eleventy-utils": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/@11ty/eleventy-utils/-/eleventy-utils-1.0.2.tgz", "resolved": "https://registry.npmjs.org/@11ty/eleventy-utils/-/eleventy-utils-1.0.2.tgz",
@ -5321,6 +5337,17 @@
"sharp": "^0.32.6" "sharp": "^0.32.6"
} }
}, },
"@11ty/eleventy-plugin-rss": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@11ty/eleventy-plugin-rss/-/eleventy-plugin-rss-1.2.0.tgz",
"integrity": "sha512-YzFnSH/5pObcFnqZ2sAQ782WmpOZHj1+xB9ydY/0j7BZ2jUNahn53VmwCB/sBRwXA/Fbwwj90q1MLo01Ru0UaQ==",
"dev": true,
"requires": {
"debug": "^4.3.4",
"posthtml": "^0.16.6",
"posthtml-urls": "1.0.0"
}
},
"@11ty/eleventy-utils": { "@11ty/eleventy-utils": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/@11ty/eleventy-utils/-/eleventy-utils-1.0.2.tgz", "resolved": "https://registry.npmjs.org/@11ty/eleventy-utils/-/eleventy-utils-1.0.2.tgz",

View file

@ -13,6 +13,7 @@
"devDependencies": { "devDependencies": {
"@11ty/eleventy": "^2.0.1", "@11ty/eleventy": "^2.0.1",
"@11ty/eleventy-img": "^3.1.8", "@11ty/eleventy-img": "^3.1.8",
"@11ty/eleventy-plugin-rss": "^1.2.0",
"autoprefixer": "^10.4.17", "autoprefixer": "^10.4.17",
"cssnano": "^6.0.3", "cssnano": "^6.0.3",
"dayjs": "^1.11.10", "dayjs": "^1.11.10",

29
src/content/pages/rss.njk Normal file
View file

@ -0,0 +1,29 @@
---
permalink: /rss.xml
layout: null
eleventyExcludeFromCollections: true
excludeFromSitemap: true
---
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>{{ meta.siteName }}</title>
<subtitle>{{ meta.siteDescription }}</subtitle>
<link href="{{ meta.url }}/feed.xml" rel="self"/>
<link href="{{ meta.url }}/" rel="alternate" type="text/html"/>
<id>{{ meta.url }}/</id>
<author>
<name>{{ meta.author }}</name>
</author>
{% for post in collections.post %}
<entry>
<id>{{ meta.url }}{{ post.url }}</id>
<title>{{ post.data.title | escape }}</title>
<link href="{{ meta.url }}{{ post.url }}"/>
<published>{{ post.date }}</published>
{%- for tag in post.data.tags %}
<category term="{{ tag }}" />
{%- endfor %}
<content type="html">{{ post.content | escape }}</content>
</entry>
{% endfor %}
</feed>