Add atom feed
This commit is contained in:
parent
26ad138602
commit
4d880b836d
5 changed files with 149 additions and 3 deletions
|
|
@ -1,7 +1,11 @@
|
||||||
|
const pluginRss = require('@11ty/eleventy-plugin-rss')
|
||||||
|
|
||||||
const { DateTime } = require('luxon')
|
const { DateTime } = require('luxon')
|
||||||
const header = require('./src/_includes/filters/header')
|
const header = require('./src/_includes/filters/header')
|
||||||
|
|
||||||
module.exports = function (config) {
|
module.exports = function (config) {
|
||||||
|
config.addPlugin(pluginRss)
|
||||||
|
|
||||||
config.setBrowserSyncConfig({
|
config.setBrowserSyncConfig({
|
||||||
files: './_site/assets/*.css'
|
files: './_site/assets/*.css'
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -22,5 +22,8 @@
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"luxon": "^2.3.0",
|
"luxon": "^2.3.0",
|
||||||
"seedrandom": "^3.0.5"
|
"seedrandom": "^3.0.5"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@11ty/eleventy-plugin-rss": "^1.1.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
106
pnpm-lock.yaml
generated
106
pnpm-lock.yaml
generated
|
|
@ -2,11 +2,15 @@ lockfileVersion: 5.3
|
||||||
|
|
||||||
specifiers:
|
specifiers:
|
||||||
'@11ty/eleventy': ^1.0.0
|
'@11ty/eleventy': ^1.0.0
|
||||||
|
'@11ty/eleventy-plugin-rss': ^1.1.2
|
||||||
'@thi.ng/hiccup': 3.6.22
|
'@thi.ng/hiccup': 3.6.22
|
||||||
lodash: ^4.17.21
|
lodash: ^4.17.21
|
||||||
luxon: ^2.3.0
|
luxon: ^2.3.0
|
||||||
seedrandom: ^3.0.5
|
seedrandom: ^3.0.5
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
'@11ty/eleventy-plugin-rss': 1.1.2
|
||||||
|
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@11ty/eleventy': 1.0.0
|
'@11ty/eleventy': 1.0.0
|
||||||
'@thi.ng/hiccup': 3.6.22
|
'@thi.ng/hiccup': 3.6.22
|
||||||
|
|
@ -20,6 +24,16 @@ packages:
|
||||||
resolution: {integrity: sha512-tYrGX3Tvccufy2jaYDkYpjBmVP1LeQq6b/d0r4GYThTXL4f3ZR7yMAl/0r8h9xvnsP+gkO53wfnV7s8cXcCtEg==}
|
resolution: {integrity: sha512-tYrGX3Tvccufy2jaYDkYpjBmVP1LeQq6b/d0r4GYThTXL4f3ZR7yMAl/0r8h9xvnsP+gkO53wfnV7s8cXcCtEg==}
|
||||||
dev: true
|
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:
|
/@11ty/eleventy/1.0.0:
|
||||||
resolution: {integrity: sha512-UMZghkMFwovu3Vh6DzjJ9GbcBnlE3nydGmLAti2AB1d6etQE+jXgfuHNxOyV1em33ywsBgGUCtLmLHaaTSU+Nw==}
|
resolution: {integrity: sha512-UMZghkMFwovu3Vh6DzjJ9GbcBnlE3nydGmLAti2AB1d6etQE+jXgfuHNxOyV1em33ywsBgGUCtLmLHaaTSU+Nw==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
|
@ -204,6 +218,10 @@ packages:
|
||||||
color-convert: 2.0.1
|
color-convert: 2.0.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/any-promise/0.1.0:
|
||||||
|
resolution: {integrity: sha1-gwtoCqflbzNFHUsEnzvYBESY7ic=}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/anymatch/3.1.2:
|
/anymatch/3.1.2:
|
||||||
resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==}
|
resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==}
|
||||||
engines: {node: '>= 8'}
|
engines: {node: '>= 8'}
|
||||||
|
|
@ -626,7 +644,6 @@ packages:
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
ms: 2.1.2
|
ms: 2.1.2
|
||||||
dev: true
|
|
||||||
|
|
||||||
/decamelize/1.2.0:
|
/decamelize/1.2.0:
|
||||||
resolution: {integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=}
|
resolution: {integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=}
|
||||||
|
|
@ -661,6 +678,33 @@ packages:
|
||||||
resolution: {integrity: sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=}
|
resolution: {integrity: sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=}
|
||||||
dev: true
|
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:
|
/easy-extender/2.3.4:
|
||||||
resolution: {integrity: sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==}
|
resolution: {integrity: sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==}
|
||||||
engines: {node: '>= 4.0.0'}
|
engines: {node: '>= 4.0.0'}
|
||||||
|
|
@ -752,7 +796,6 @@ packages:
|
||||||
|
|
||||||
/entities/2.1.0:
|
/entities/2.1.0:
|
||||||
resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==}
|
resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/errno/0.1.8:
|
/errno/0.1.8:
|
||||||
resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
|
resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
|
||||||
|
|
@ -1002,6 +1045,20 @@ packages:
|
||||||
function-bind: 1.1.1
|
function-bind: 1.1.1
|
||||||
dev: true
|
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:
|
/http-errors/1.6.3:
|
||||||
resolution: {integrity: sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=}
|
resolution: {integrity: sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=}
|
||||||
engines: {node: '>= 0.6'}
|
engines: {node: '>= 0.6'}
|
||||||
|
|
@ -1236,6 +1293,10 @@ packages:
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/list-to-array/1.1.0:
|
||||||
|
resolution: {integrity: sha1-yn3/ZAYGQzysdcvoRGrNhksVv28=}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/localtunnel/2.0.2:
|
/localtunnel/2.0.2:
|
||||||
resolution: {integrity: sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==}
|
resolution: {integrity: sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==}
|
||||||
engines: {node: '>=8.3.0'}
|
engines: {node: '>=8.3.0'}
|
||||||
|
|
@ -1373,7 +1434,6 @@ packages:
|
||||||
|
|
||||||
/ms/2.1.2:
|
/ms/2.1.2:
|
||||||
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
|
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/ms/2.1.3:
|
/ms/2.1.3:
|
||||||
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
|
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
|
||||||
|
|
@ -1481,6 +1541,10 @@ packages:
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/parse-srcset/1.0.2:
|
||||||
|
resolution: {integrity: sha1-8r0iH2zJcKk42IVWq8WJyqqiveE=}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/parseqs/0.0.6:
|
/parseqs/0.0.6:
|
||||||
resolution: {integrity: sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==}
|
resolution: {integrity: sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
@ -1536,6 +1600,36 @@ packages:
|
||||||
is-number-like: 1.0.8
|
is-number-like: 1.0.8
|
||||||
dev: true
|
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:
|
/pretty/2.0.0:
|
||||||
resolution: {integrity: sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=}
|
resolution: {integrity: sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
|
|
@ -1545,6 +1639,12 @@ packages:
|
||||||
js-beautify: 1.14.0
|
js-beautify: 1.14.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/promise-each/2.2.0:
|
||||||
|
resolution: {integrity: sha1-M1MXTv8mlEgQN+BOAfd6oPttG2A=}
|
||||||
|
dependencies:
|
||||||
|
any-promise: 0.1.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/promise/7.3.1:
|
/promise/7.3.1:
|
||||||
resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==}
|
resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
<title>{% if title %}{{ title }} | {% endif %}{{ page.title }}</title>
|
<title>{% if title %}{{ title }} | {% endif %}{{ page.title }}</title>
|
||||||
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🌌</text></svg>">
|
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🌌</text></svg>">
|
||||||
<link rel="stylesheet" href="{{ '/assets/style.css' | url }}" />
|
<link rel="stylesheet" href="{{ '/assets/style.css' | url }}" />
|
||||||
|
<link rel="alternate" type="application/atom+xml" href="{{ 'feed.xml' | url }}" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<main class="{{ page.url | pageClasses }}">
|
<main class="{{ page.url | pageClasses }}">
|
||||||
|
|
|
||||||
38
src/feed.njk
Normal file
38
src/feed.njk
Normal file
|
|
@ -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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
---
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||||
|
<title>{{ page.title }}</title>
|
||||||
|
<subtitle>{{ metadata.subtitle }}</subtitle>
|
||||||
|
<link href="{{ '/feed.xml' | url | absoluteUrl(page.baseUrl) }}" rel="self"/>
|
||||||
|
<link href="{{ page.baseUrl }}"/>
|
||||||
|
<updated>{{ collections.posts | getNewestCollectionItemDate | dateToRfc3339 }}</updated>
|
||||||
|
<id>{{ '/feed.xml' | url | absoluteUrl(page.baseUrl) }}</id>
|
||||||
|
<author>
|
||||||
|
<name>{{ metadata.author.name }}</name>
|
||||||
|
<email>{{ metadata.author.email }}</email>
|
||||||
|
</author>
|
||||||
|
{%- for post in collections.posts %}
|
||||||
|
{%- if not post.data.draft %}
|
||||||
|
{% set absolutePostUrl %}{{ post.url | url | absoluteUrl(page.baseUrl) }}{% endset %}
|
||||||
|
<entry>
|
||||||
|
<title>{{ post.data.title }}</title>
|
||||||
|
<link href="{{ absolutePostUrl }}"/>
|
||||||
|
<updated>{{ post.date | dateToRfc3339 }}</updated>
|
||||||
|
<id>{{ absolutePostUrl }}</id>
|
||||||
|
<content type="html">{{ post.templateContent | htmlToAbsoluteUrls(absolutePostUrl) }}</content>
|
||||||
|
</entry>
|
||||||
|
{%- endif %}
|
||||||
|
{%- endfor %}
|
||||||
|
</feed>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue