aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIndrajith K L2022-09-03 03:13:50 +0530
committerIndrajith K L2022-09-03 03:13:50 +0530
commit8368cbbd80f9dfe5539dfdf3e4b819c1228dcb22 (patch)
tree6adfc918dcfe17d997d0faabd3da459906fc1452
parent7121a634d79b79e158ca91ce68051b2805733fa9 (diff)
downloadindrajith-dev-8368cbbd80f9dfe5539dfdf3e4b819c1228dcb22.tar.gz
indrajith-dev-8368cbbd80f9dfe5539dfdf3e4b819c1228dcb22.tar.bz2
indrajith-dev-8368cbbd80f9dfe5539dfdf3e4b819c1228dcb22.zip
Adds RSS Feed
-rw-r--r--.eleventy.js12
-rw-r--r--package-lock.json200
-rw-r--r--package.json3
-rw-r--r--src/rss/feed.njk37
4 files changed, 248 insertions, 4 deletions
diff --git a/.eleventy.js b/.eleventy.js
index e5d8260..ab22c9d 100644
--- a/.eleventy.js
+++ b/.eleventy.js
@@ -2,12 +2,13 @@
const dayjs = require("dayjs");
const faviconPlugin = require("eleventy-favicon");
-const eleventyPluginFeathericons = require('eleventy-plugin-feathericons');
+const eleventyPluginFeathericons = require("eleventy-plugin-feathericons");
const syntaxHighlight = require("@11ty/eleventy-plugin-syntaxhighlight");
+const pluginRss = require("@11ty/eleventy-plugin-rss");
module.exports = function (config) {
config.addPassthroughCopy({
- 'src/_includes/assets/css/styles.css': './styles.css'
+ "src/_includes/assets/css/styles.css": "./styles.css",
});
config.addPassthroughCopy({
"src/css/fonts": "./fonts",
@@ -16,11 +17,16 @@ module.exports = function (config) {
"src/images": "./images",
});
config.addPlugin(faviconPlugin, {
- destination: './public'
+ destination: "./public",
});
config.addWatchTarget("./src/css");
config.addPlugin(eleventyPluginFeathericons);
config.addPlugin(syntaxHighlight);
+ config.addPlugin(pluginRss, {
+ posthtmlRenderOptions: {
+ closingSingleTag: "default",
+ },
+ });
config.addFilter("dateFilter", function (date) {
return dayjs(date).format("DD MMM YYYY");
diff --git a/package-lock.json b/package-lock.json
index e58ecdc..ef24c42 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,6 +10,7 @@
"license": "ISC",
"devDependencies": {
"@11ty/eleventy": "^1.0.2",
+ "@11ty/eleventy-plugin-rss": "^1.2.0",
"@11ty/eleventy-plugin-syntaxhighlight": "^4.1.0",
"@tailwindcss/line-clamp": "^0.4.0",
"autoprefixer": "^10.4.8",
@@ -79,6 +80,21 @@
"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-plugin-syntaxhighlight": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/@11ty/eleventy-plugin-syntaxhighlight/-/eleventy-plugin-syntaxhighlight-4.1.0.tgz",
@@ -377,6 +393,12 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
+ "node_modules/any-promise": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-0.1.0.tgz",
+ "integrity": "sha512-lqzY9o+BbeGHRCOyxQkt/Tgvz0IZhTmQiA+LxQW8wSNpcTbj8K+0cZiSEvbpNZZP9/11Gy7dnLO3GNWUXO4d1g==",
+ "dev": true
+ },
"node_modules/anymatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
@@ -2390,6 +2412,15 @@
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
+ "node_modules/http-equiv-refresh": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/http-equiv-refresh/-/http-equiv-refresh-1.0.0.tgz",
+ "integrity": "sha512-TScO04soylRN9i/QdOdgZyhydXg9z6XdaGzEyOgDKycePeDeTT4KvigjBcI+tgfTlieLWauGORMq5F1eIDa+1w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
"node_modules/http-errors": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
@@ -2628,6 +2659,12 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-json": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz",
+ "integrity": "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==",
+ "dev": true
+ },
"node_modules/is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
@@ -2961,6 +2998,12 @@
"url": "https://opencollective.com/liquidjs"
}
},
+ "node_modules/list-to-array": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/list-to-array/-/list-to-array-1.1.0.tgz",
+ "integrity": "sha512-+dAZZ2mM+/m+vY9ezfoueVvrgnHIGi5FvgSymbIgJOFwiznWyA59mav95L+Mc6xPtL3s9gm5eNTlNtxJLbNM1g==",
+ "dev": true
+ },
"node_modules/load-bmfont": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz",
@@ -3537,6 +3580,12 @@
"node": ">=4"
}
},
+ "node_modules/parse-srcset": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz",
+ "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==",
+ "dev": true
+ },
"node_modules/parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
@@ -3959,6 +4008,58 @@
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
"dev": true
},
+ "node_modules/posthtml": {
+ "version": "0.16.6",
+ "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz",
+ "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==",
+ "dev": true,
+ "dependencies": {
+ "posthtml-parser": "^0.11.0",
+ "posthtml-render": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/posthtml-parser": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz",
+ "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==",
+ "dev": true,
+ "dependencies": {
+ "htmlparser2": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/posthtml-render": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz",
+ "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==",
+ "dev": true,
+ "dependencies": {
+ "is-json": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/posthtml-urls": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/posthtml-urls/-/posthtml-urls-1.0.0.tgz",
+ "integrity": "sha512-CMJ0L009sGQVUuYM/g6WJdscsq6ooAwhUuF6CDlYPMLxKp2rmCYVebEU+wZGxnQstGJhZPMvXsRhtqekILd5/w==",
+ "dev": true,
+ "dependencies": {
+ "http-equiv-refresh": "^1.0.0",
+ "list-to-array": "^1.1.0",
+ "parse-srcset": "^1.0.2",
+ "promise-each": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ }
+ },
"node_modules/prebuild-install": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz",
@@ -4035,6 +4136,15 @@
"asap": "~2.0.3"
}
},
+ "node_modules/promise-each": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/promise-each/-/promise-each-2.2.0.tgz",
+ "integrity": "sha512-67roqt1k3QDA41DZ8xi0V+rF3GoaMiX7QilbXu0vXimut+9RcKBNZ/t60xCRgcsihmNUsEjh48xLfNqOrKblUg==",
+ "dev": true,
+ "dependencies": {
+ "any-promise": "^0.1.0"
+ }
+ },
"node_modules/proto-list": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
@@ -5897,6 +6007,17 @@
"slugify": "^1.6.5"
}
},
+ "@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-plugin-syntaxhighlight": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/@11ty/eleventy-plugin-syntaxhighlight/-/eleventy-plugin-syntaxhighlight-4.1.0.tgz",
@@ -6120,6 +6241,12 @@
"color-convert": "^2.0.1"
}
},
+ "any-promise": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-0.1.0.tgz",
+ "integrity": "sha512-lqzY9o+BbeGHRCOyxQkt/Tgvz0IZhTmQiA+LxQW8wSNpcTbj8K+0cZiSEvbpNZZP9/11Gy7dnLO3GNWUXO4d1g==",
+ "dev": true
+ },
"anymatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
@@ -7659,6 +7786,12 @@
}
}
},
+ "http-equiv-refresh": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/http-equiv-refresh/-/http-equiv-refresh-1.0.0.tgz",
+ "integrity": "sha512-TScO04soylRN9i/QdOdgZyhydXg9z6XdaGzEyOgDKycePeDeTT4KvigjBcI+tgfTlieLWauGORMq5F1eIDa+1w==",
+ "dev": true
+ },
"http-errors": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
@@ -7836,6 +7969,12 @@
"is-extglob": "^2.1.1"
}
},
+ "is-json": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz",
+ "integrity": "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==",
+ "dev": true
+ },
"is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
@@ -8109,6 +8248,12 @@
"integrity": "sha512-Q1EfRoVYSFmbaTzEHoz39/dMNjPec8uJGHvQiHyzeMp14M9E40a6pOpmDHW009a6qHcjisZyOH96O6No2+1bBQ==",
"dev": true
},
+ "list-to-array": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/list-to-array/-/list-to-array-1.1.0.tgz",
+ "integrity": "sha512-+dAZZ2mM+/m+vY9ezfoueVvrgnHIGi5FvgSymbIgJOFwiznWyA59mav95L+Mc6xPtL3s9gm5eNTlNtxJLbNM1g==",
+ "dev": true
+ },
"load-bmfont": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz",
@@ -8558,6 +8703,12 @@
"pngjs": "^3.2.0"
}
},
+ "parse-srcset": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz",
+ "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==",
+ "dev": true
+ },
"parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
@@ -8831,6 +8982,46 @@
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
"dev": true
},
+ "posthtml": {
+ "version": "0.16.6",
+ "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz",
+ "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==",
+ "dev": true,
+ "requires": {
+ "posthtml-parser": "^0.11.0",
+ "posthtml-render": "^3.0.0"
+ }
+ },
+ "posthtml-parser": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz",
+ "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==",
+ "dev": true,
+ "requires": {
+ "htmlparser2": "^7.1.1"
+ }
+ },
+ "posthtml-render": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz",
+ "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==",
+ "dev": true,
+ "requires": {
+ "is-json": "^2.0.1"
+ }
+ },
+ "posthtml-urls": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/posthtml-urls/-/posthtml-urls-1.0.0.tgz",
+ "integrity": "sha512-CMJ0L009sGQVUuYM/g6WJdscsq6ooAwhUuF6CDlYPMLxKp2rmCYVebEU+wZGxnQstGJhZPMvXsRhtqekILd5/w==",
+ "dev": true,
+ "requires": {
+ "http-equiv-refresh": "^1.0.0",
+ "list-to-array": "^1.1.0",
+ "parse-srcset": "^1.0.2",
+ "promise-each": "^2.2.0"
+ }
+ },
"prebuild-install": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz",
@@ -8889,6 +9080,15 @@
"asap": "~2.0.3"
}
},
+ "promise-each": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/promise-each/-/promise-each-2.2.0.tgz",
+ "integrity": "sha512-67roqt1k3QDA41DZ8xi0V+rF3GoaMiX7QilbXu0vXimut+9RcKBNZ/t60xCRgcsihmNUsEjh48xLfNqOrKblUg==",
+ "dev": true,
+ "requires": {
+ "any-promise": "^0.1.0"
+ }
+ },
"proto-list": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
diff --git a/package.json b/package.json
index 9059371..abccb36 100644
--- a/package.json
+++ b/package.json
@@ -10,13 +10,14 @@
"eleventy": "eleventy",
"start": "concurrently \"npm run tailwind:process\" \"npm run serve\"",
"build": "npm run tailwindcli:build && npm run eleventy",
- "tailwindcli:build":"npx tailwindcss -i src/css/styles.css -o src/_includes/assets/css/styles.css"
+ "tailwindcli:build": "npx tailwindcss -i src/css/styles.css -o src/_includes/assets/css/styles.css"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@11ty/eleventy": "^1.0.2",
+ "@11ty/eleventy-plugin-rss": "^1.2.0",
"@11ty/eleventy-plugin-syntaxhighlight": "^4.1.0",
"@tailwindcss/line-clamp": "^0.4.0",
"autoprefixer": "^10.4.8",
diff --git a/src/rss/feed.njk b/src/rss/feed.njk
new file mode 100644
index 0000000..379f5fd
--- /dev/null
+++ b/src/rss/feed.njk
@@ -0,0 +1,37 @@
+---json
+{
+ "permalink": "feed.xml",
+ "eleventyExcludeFromCollections": true,
+ "metadata": {
+ "title": "indrajith.dev",
+ "subtitle": "This site is where I write about my fun side projects, R&D's, random thoughts, game development etc.",
+ "language": "en",
+ "url": "https://indrajith.dev/",
+ "author": {
+ "name": "Indrajith K L",
+ "email": "indrajith@indrajith.dev"
+ }
+ }
+}
+---
+<?xml version="1.0" encoding="utf-8"?>
+<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:base="{{ metadata.url }}" xmlns:atom="http://www.w3.org/2005/Atom">
+ <channel>
+ <title>{{ metadata.title }}</title>
+ <link>{{ metadata.url }}</link>
+ <atom:link href="{{ permalink | absoluteUrl(metadata.url) }}" rel="self" type="application/rss+xml" />
+ <description>{{ metadata.subtitle }}</description>
+ <language>{{ metadata.language }}</language>
+ {%- for post in collections.posts | reverse %}
+ {%- set absolutePostUrl = post.url | absoluteUrl(metadata.url) %}
+ <item>
+ <title>{{ post.data.title }}</title>
+ <link>{{ absolutePostUrl }}</link>
+ <description>{{ post.templateContent | htmlToAbsoluteUrls(absolutePostUrl) }}</description>
+ <pubDate>{{ post.date | dateToRfc822 }}</pubDate>
+ <dc:creator>{{ metadata.author.name }}</dc:creator>
+ <guid>{{ absolutePostUrl }}</guid>
+ </item>
+ {%- endfor %}
+ </channel>
+</rss> \ No newline at end of file