From 4d880b836dce07a897c35f99e47ad104144100e9 Mon Sep 17 00:00:00 2001 From: arne Date: Sat, 16 Apr 2022 08:38:54 +0200 Subject: [PATCH] Add atom feed --- .eleventy.js | 4 ++ package.json | 3 ++ pnpm-lock.yaml | 106 +++++++++++++++++++++++++++++++++++++++-- src/_includes/root.njk | 1 + src/feed.njk | 38 +++++++++++++++ 5 files changed, 149 insertions(+), 3 deletions(-) create mode 100644 src/feed.njk diff --git a/.eleventy.js b/.eleventy.js index 676161f..9f5d0d4 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -1,7 +1,11 @@ +const pluginRss = require('@11ty/eleventy-plugin-rss') + const { DateTime } = require('luxon') const header = require('./src/_includes/filters/header') module.exports = function (config) { + config.addPlugin(pluginRss) + config.setBrowserSyncConfig({ files: './_site/assets/*.css' }) diff --git a/package.json b/package.json index 2f2fca6..dfcec07 100644 --- a/package.json +++ b/package.json @@ -22,5 +22,8 @@ "lodash": "^4.17.21", "luxon": "^2.3.0", "seedrandom": "^3.0.5" + }, + "dependencies": { + "@11ty/eleventy-plugin-rss": "^1.1.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5405665..c1912ca 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2,11 +2,15 @@ lockfileVersion: 5.3 specifiers: '@11ty/eleventy': ^1.0.0 + '@11ty/eleventy-plugin-rss': ^1.1.2 '@thi.ng/hiccup': 3.6.22 lodash: ^4.17.21 luxon: ^2.3.0 seedrandom: ^3.0.5 +dependencies: + '@11ty/eleventy-plugin-rss': 1.1.2 + devDependencies: '@11ty/eleventy': 1.0.0 '@thi.ng/hiccup': 3.6.22 @@ -20,6 +24,16 @@ packages: resolution: {integrity: sha512-tYrGX3Tvccufy2jaYDkYpjBmVP1LeQq6b/d0r4GYThTXL4f3ZR7yMAl/0r8h9xvnsP+gkO53wfnV7s8cXcCtEg==} dev: true + /@11ty/eleventy-plugin-rss/1.1.2: + resolution: {integrity: sha512-QdXMl29MzMtyMj9Y1lYijPX4vGMnBDo4Peyi4GCJznCO4+eryAZiyVYciLBCek893EXL3RLOuVSshYo+jvjZ0w==} + dependencies: + debug: 4.3.3 + posthtml: 0.15.2 + posthtml-urls: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: false + /@11ty/eleventy/1.0.0: resolution: {integrity: sha512-UMZghkMFwovu3Vh6DzjJ9GbcBnlE3nydGmLAti2AB1d6etQE+jXgfuHNxOyV1em33ywsBgGUCtLmLHaaTSU+Nw==} engines: {node: '>=12'} @@ -204,6 +218,10 @@ packages: color-convert: 2.0.1 dev: true + /any-promise/0.1.0: + resolution: {integrity: sha1-gwtoCqflbzNFHUsEnzvYBESY7ic=} + dev: false + /anymatch/3.1.2: resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} engines: {node: '>= 8'} @@ -626,7 +644,6 @@ packages: optional: true dependencies: ms: 2.1.2 - dev: true /decamelize/1.2.0: resolution: {integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=} @@ -661,6 +678,33 @@ packages: resolution: {integrity: sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=} dev: true + /dom-serializer/1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.1.0 + dev: false + + /domelementtype/2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: false + + /domhandler/4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: false + + /domutils/2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + dev: false + /easy-extender/2.3.4: resolution: {integrity: sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==} engines: {node: '>= 4.0.0'} @@ -752,7 +796,6 @@ packages: /entities/2.1.0: resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} - dev: true /errno/0.1.8: resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} @@ -1002,6 +1045,20 @@ packages: function-bind: 1.1.1 dev: true + /htmlparser2/6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.1.0 + dev: false + + /http-equiv-refresh/1.0.0: + resolution: {integrity: sha1-jsU4hmBCvl8/evpzfRmNlL6xsHs=} + engines: {node: '>= 0.10'} + dev: false + /http-errors/1.6.3: resolution: {integrity: sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=} engines: {node: '>= 0.6'} @@ -1236,6 +1293,10 @@ packages: hasBin: true dev: true + /list-to-array/1.1.0: + resolution: {integrity: sha1-yn3/ZAYGQzysdcvoRGrNhksVv28=} + dev: false + /localtunnel/2.0.2: resolution: {integrity: sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==} engines: {node: '>=8.3.0'} @@ -1373,7 +1434,6 @@ packages: /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true /ms/2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -1481,6 +1541,10 @@ packages: engines: {node: '>=6'} dev: true + /parse-srcset/1.0.2: + resolution: {integrity: sha1-8r0iH2zJcKk42IVWq8WJyqqiveE=} + dev: false + /parseqs/0.0.6: resolution: {integrity: sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==} dev: true @@ -1536,6 +1600,36 @@ packages: is-number-like: 1.0.8 dev: true + /posthtml-parser/0.7.2: + resolution: {integrity: sha512-LjEEG/3fNcWZtBfsOE3Gbyg1Li4CmsZRkH1UmbMR7nKdMXVMYI3B4/ZMiCpaq8aI1Aym4FRMMW9SAOLSwOnNsQ==} + engines: {node: '>=10'} + dependencies: + htmlparser2: 6.1.0 + dev: false + + /posthtml-render/1.4.0: + resolution: {integrity: sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==} + engines: {node: '>=10'} + dev: false + + /posthtml-urls/1.0.0: + resolution: {integrity: sha512-CMJ0L009sGQVUuYM/g6WJdscsq6ooAwhUuF6CDlYPMLxKp2rmCYVebEU+wZGxnQstGJhZPMvXsRhtqekILd5/w==} + engines: {node: '>= 4'} + dependencies: + http-equiv-refresh: 1.0.0 + list-to-array: 1.1.0 + parse-srcset: 1.0.2 + promise-each: 2.2.0 + dev: false + + /posthtml/0.15.2: + resolution: {integrity: sha512-YugEJ5ze/0DLRIVBjCpDwANWL4pPj1kHJ/2llY8xuInr0nbkon3qTiMPe5LQa+cCwNjxS7nAZZTp+1M+6mT4Zg==} + engines: {node: '>=10.0.0'} + dependencies: + posthtml-parser: 0.7.2 + posthtml-render: 1.4.0 + dev: false + /pretty/2.0.0: resolution: {integrity: sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=} engines: {node: '>=0.10.0'} @@ -1545,6 +1639,12 @@ packages: js-beautify: 1.14.0 dev: true + /promise-each/2.2.0: + resolution: {integrity: sha1-M1MXTv8mlEgQN+BOAfd6oPttG2A=} + dependencies: + any-promise: 0.1.0 + dev: false + /promise/7.3.1: resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} dependencies: diff --git a/src/_includes/root.njk b/src/_includes/root.njk index f7f7bec..7a2ae19 100644 --- a/src/_includes/root.njk +++ b/src/_includes/root.njk @@ -6,6 +6,7 @@ {% if title %}{{ title }} | {% endif %}{{ page.title }} +
diff --git a/src/feed.njk b/src/feed.njk new file mode 100644 index 0000000..0a7745d --- /dev/null +++ b/src/feed.njk @@ -0,0 +1,38 @@ +---json +{ + "permalink": "feed.xml", + "eleventyExcludeFromCollections": true, + "metadata": { + "subtitle": "I am by no means an expert in any of this.", + "author": { + "name": "arne", + "email": "feed at arnes.space" + } + } +} +--- + + + {{ page.title }} + {{ metadata.subtitle }} + + + {{ collections.posts | getNewestCollectionItemDate | dateToRfc3339 }} + {{ '/feed.xml' | url | absoluteUrl(page.baseUrl) }} + + {{ metadata.author.name }} + {{ metadata.author.email }} + + {%- for post in collections.posts %} + {%- if not post.data.draft %} + {% set absolutePostUrl %}{{ post.url | url | absoluteUrl(page.baseUrl) }}{% endset %} + + {{ post.data.title }} + + {{ post.date | dateToRfc3339 }} + {{ absolutePostUrl }} + {{ post.templateContent | htmlToAbsoluteUrls(absolutePostUrl) }} + + {%- endif %} + {%- endfor %} +