Add atom/rss/json feeds
This commit is contained in:
parent
c8c5981bd3
commit
b10dfae5dd
@ -1 +1,5 @@
|
||||
module.exports = function() {}
|
||||
const tags = require('./tags');
|
||||
|
||||
module.exports = function(eleventyConfig) {
|
||||
eleventyConfig.addPlugin(tags);
|
||||
}
|
10
config/collections/tags.js
Normal file
10
config/collections/tags.js
Normal file
@ -0,0 +1,10 @@
|
||||
module.exports = (eleventyConfig) => {
|
||||
eleventyConfig.addCollection('tags', (collectionApi) => {
|
||||
const tags = new Set();
|
||||
collectionApi.getAll().forEach((item) => {
|
||||
if (!item.data.tags) return;
|
||||
item.data.tags.forEach((tag) => tags.add(tag));
|
||||
});
|
||||
return [...tags];
|
||||
});
|
||||
}
|
@ -16,5 +16,5 @@ module.exports = function(eleventyConfig) {
|
||||
'hour12': true
|
||||
}));
|
||||
|
||||
eleventyConfig.addFilter('rfc3339', date => new Date(date).toISOString());
|
||||
// eleventyConfig.addFilter('rfc3339', date => new Date(date).toISOString());
|
||||
}
|
||||
|
7
config/filters/filterBy.js
Normal file
7
config/filters/filterBy.js
Normal file
@ -0,0 +1,7 @@
|
||||
module.exports = (eleventyConfig) => {
|
||||
eleventyConfig.addFilter('filterBy', (collection, value) => {
|
||||
return collection.filter((item) => {
|
||||
return item.data.tags.includes(value);
|
||||
})
|
||||
});
|
||||
}
|
@ -1,11 +1,12 @@
|
||||
const dateFilters = require('./dates');
|
||||
const arrayFilters = require('./arrays');
|
||||
const excerptFilter = require('./excerpt');
|
||||
|
||||
const filterBy = require('./filterBy')
|
||||
module.exports = function(eleventyConfig) {
|
||||
eleventyConfig.addPlugin(dateFilters);
|
||||
eleventyConfig.addPlugin(arrayFilters);
|
||||
eleventyConfig.addPlugin(excerptFilter);
|
||||
eleventyConfig.addPlugin(filterBy);
|
||||
|
||||
eleventyConfig.addFilter('keys', obj => Object.keys(obj))
|
||||
eleventyConfig.addFilter('json', obj => JSON.stringify(obj, null, 2));
|
||||
|
377
package-lock.json
generated
377
package-lock.json
generated
@ -12,7 +12,6 @@
|
||||
"@11ty/eleventy": "^2.0.0",
|
||||
"@11ty/eleventy-fetch": "^3.0.0",
|
||||
"@11ty/eleventy-img": "^3.0.0",
|
||||
"@11ty/eleventy-plugin-rss": "^1.2.0",
|
||||
"@11ty/eleventy-plugin-syntaxhighlight": "^4.2.0",
|
||||
"@toycode/markdown-it-class": "^1.2.4",
|
||||
"autoprefixer": "^10.4.13",
|
||||
@ -21,7 +20,7 @@
|
||||
"lodash": "^4.17.21",
|
||||
"markdown-it-abbr": "^1.0.4",
|
||||
"markdown-it-anchor": "^8.6.6",
|
||||
"markdown-it-eleventy-img": "^0.9.0",
|
||||
"markdown-it-eleventy-img": "^0.10.1",
|
||||
"markdown-it-emoji": "^2.0.2",
|
||||
"markdown-it-footnote": "^3.0.3",
|
||||
"markdown-it-link-attributes": "^4.0.1",
|
||||
@ -35,6 +34,9 @@
|
||||
"postcss-nested": "^6.0.0",
|
||||
"prettier": "^2.8.3",
|
||||
"tailwindcss": "^3.2.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@11ty/eleventy-plugin-rss": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@11ty/dependency-tree": {
|
||||
@ -146,16 +148,17 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@11ty/eleventy-img": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@11ty/eleventy-img/-/eleventy-img-3.0.0.tgz",
|
||||
"integrity": "sha512-qMotOn0ywxwuRd2zF2gNfJSwVQNbSBdzVQ2N1UPQeiXNZrxPGIitfraSf/OfWJbgGI9Cje12AtXdzr3Qc6wctw==",
|
||||
"version": "3.1.8",
|
||||
"resolved": "https://registry.npmjs.org/@11ty/eleventy-img/-/eleventy-img-3.1.8.tgz",
|
||||
"integrity": "sha512-9xVqbykggQAHTSiZEo6nUayS8l8nkM7RU8dCjGzikCc8FXSW/E17ytq7SaDngo24D3LZdD+3Gheh4zSeidrImA==",
|
||||
"dependencies": {
|
||||
"@11ty/eleventy-fetch": "^3.0.0",
|
||||
"@11ty/eleventy-fetch": "^4.0.0",
|
||||
"brotli-size": "^4.0.0",
|
||||
"debug": "^4.3.4",
|
||||
"entities": "^4.4.0",
|
||||
"entities": "^4.5.0",
|
||||
"image-size": "^1.0.2",
|
||||
"p-queue": "^6.6.2",
|
||||
"sharp": "^0.31.3"
|
||||
"sharp": "^0.32.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.15.0"
|
||||
@ -165,10 +168,28 @@
|
||||
"url": "https://opencollective.com/11ty"
|
||||
}
|
||||
},
|
||||
"node_modules/@11ty/eleventy-img/node_modules/@11ty/eleventy-fetch": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@11ty/eleventy-fetch/-/eleventy-fetch-4.0.0.tgz",
|
||||
"integrity": "sha512-wGAd0r+8DUWr22fK5r07dOKuNY6ltA7hX+sJzngGZL1yJmuUVdM/xPQZ+iq0BFgf/ZeRdpVEzf2D0cpVZUuiTg==",
|
||||
"dependencies": {
|
||||
"debug": "^4.3.4",
|
||||
"flat-cache": "^3.0.4",
|
||||
"node-fetch": "^2.6.7",
|
||||
"p-queue": "^6.6.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/11ty"
|
||||
}
|
||||
},
|
||||
"node_modules/@11ty/eleventy-img/node_modules/entities": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz",
|
||||
"integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==",
|
||||
"version": "4.5.0",
|
||||
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
|
||||
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
|
||||
"engines": {
|
||||
"node": ">=0.12"
|
||||
},
|
||||
@ -180,6 +201,7 @@
|
||||
"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",
|
||||
@ -647,6 +669,11 @@
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/b4a": {
|
||||
"version": "1.6.4",
|
||||
"resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz",
|
||||
"integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw=="
|
||||
},
|
||||
"node_modules/babel-walk": {
|
||||
"version": "3.0.0-canary-5",
|
||||
"resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz",
|
||||
@ -761,6 +788,17 @@
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/brotli-size": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/brotli-size/-/brotli-size-4.0.0.tgz",
|
||||
"integrity": "sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA==",
|
||||
"dependencies": {
|
||||
"duplexer": "0.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 10.16.0"
|
||||
}
|
||||
},
|
||||
"node_modules/browserslist": {
|
||||
"version": "4.21.5",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
|
||||
@ -1289,9 +1327,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/detect-libc": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
|
||||
"integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==",
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz",
|
||||
"integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
@ -1408,6 +1446,11 @@
|
||||
"url": "https://github.com/fb55/domutils?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/duplexer": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
|
||||
"integrity": "sha512-sxNZ+ljy+RA1maXoUReeqBBpBC6RLKmg5ewzV+x+mSETmWNoKdZN6vcQjpFROemza23hGFskJtFNoUWUaQ+R4Q=="
|
||||
},
|
||||
"node_modules/eastasianwidth": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
|
||||
@ -1628,6 +1671,11 @@
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/fast-fifo": {
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
|
||||
"integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ=="
|
||||
},
|
||||
"node_modules/fast-glob": {
|
||||
"version": "3.2.12",
|
||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
|
||||
@ -2872,57 +2920,19 @@
|
||||
}
|
||||
},
|
||||
"node_modules/markdown-it-eleventy-img": {
|
||||
"version": "0.9.0",
|
||||
"resolved": "https://registry.npmjs.org/markdown-it-eleventy-img/-/markdown-it-eleventy-img-0.9.0.tgz",
|
||||
"integrity": "sha512-C2d7D5MRipB1XlFjiWYUsqtKiy0I+QVcZjk1ZRdKZn44U/wvtO6apyMU24ssgr3qxczUGCbh+vpX4ESQN8CM3Q==",
|
||||
"version": "0.10.1",
|
||||
"resolved": "https://registry.npmjs.org/markdown-it-eleventy-img/-/markdown-it-eleventy-img-0.10.1.tgz",
|
||||
"integrity": "sha512-MaPM7M1qFzbMj1kUeOiC4ZKICO+543bCDyCd7X3PvUdKwIX1dLFv00jO4D6rJPhiJTW7iFdHkRATuvgUdYCE2w==",
|
||||
"dependencies": {
|
||||
"@11ty/eleventy-img": "^2.0.1"
|
||||
"@11ty/eleventy-img": "^3.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
"node": ">=14.15"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"markdown-it": ">= 9.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/markdown-it-eleventy-img/node_modules/@11ty/eleventy-img": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@11ty/eleventy-img/-/eleventy-img-2.0.1.tgz",
|
||||
"integrity": "sha512-l30E+TszoovF/NK0WRc1oQoI42VxmYyM3O9cPiS20alSBHucX92RFdwl9HMDyRoh1g+App3+PomFIa5FKkb1Dw==",
|
||||
"dependencies": {
|
||||
"@11ty/eleventy-fetch": "^3.0.0",
|
||||
"debug": "^4.3.3",
|
||||
"image-size": "^1.0.1",
|
||||
"p-queue": "^6.6.2",
|
||||
"sharp": "^0.30.3"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/11ty"
|
||||
}
|
||||
},
|
||||
"node_modules/markdown-it-eleventy-img/node_modules/sharp": {
|
||||
"version": "0.30.7",
|
||||
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.30.7.tgz",
|
||||
"integrity": "sha512-G+MY2YW33jgflKPTXXptVO28HvNOo9G3j0MybYAHeEmby+QuD2U98dT6ueht9cv/XDqZspSpIhoSW+BAKJ7Hig==",
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
"color": "^4.2.3",
|
||||
"detect-libc": "^2.0.1",
|
||||
"node-addon-api": "^5.0.0",
|
||||
"prebuild-install": "^7.1.1",
|
||||
"semver": "^7.3.7",
|
||||
"simple-get": "^4.0.1",
|
||||
"tar-fs": "^2.1.1",
|
||||
"tunnel-agent": "^0.6.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12.13.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://opencollective.com/libvips"
|
||||
}
|
||||
},
|
||||
"node_modules/markdown-it-emoji": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-2.0.2.tgz",
|
||||
@ -3148,9 +3158,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/nanoid": {
|
||||
"version": "3.3.4",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
|
||||
"integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
|
||||
"version": "3.3.7",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
|
||||
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ai"
|
||||
}
|
||||
],
|
||||
"bin": {
|
||||
"nanoid": "bin/nanoid.cjs"
|
||||
},
|
||||
@ -3184,11 +3200,6 @@
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/node-addon-api": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz",
|
||||
"integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA=="
|
||||
},
|
||||
"node_modules/node-fetch": {
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz",
|
||||
@ -3660,9 +3671,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss": {
|
||||
"version": "8.4.21",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
|
||||
"integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
|
||||
"version": "8.4.32",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz",
|
||||
"integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
@ -3671,10 +3682,14 @@
|
||||
{
|
||||
"type": "tidelift",
|
||||
"url": "https://tidelift.com/funding/github/npm/postcss"
|
||||
},
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ai"
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"nanoid": "^3.3.4",
|
||||
"nanoid": "^3.3.7",
|
||||
"picocolors": "^1.0.0",
|
||||
"source-map-js": "^1.0.2"
|
||||
},
|
||||
@ -4523,6 +4538,11 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"node_modules/queue-tick": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
|
||||
"integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag=="
|
||||
},
|
||||
"node_modules/quick-lru": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
|
||||
@ -4812,18 +4832,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/sharp": {
|
||||
"version": "0.31.3",
|
||||
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.31.3.tgz",
|
||||
"integrity": "sha512-XcR4+FCLBFKw1bdB+GEhnUNXNXvnt0tDo4WsBsraKymuo/IAuPuCBVAL2wIkUw2r/dwFW5Q5+g66Kwl2dgDFVg==",
|
||||
"version": "0.32.6",
|
||||
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz",
|
||||
"integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==",
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
"color": "^4.2.3",
|
||||
"detect-libc": "^2.0.1",
|
||||
"node-addon-api": "^5.0.0",
|
||||
"detect-libc": "^2.0.2",
|
||||
"node-addon-api": "^6.1.0",
|
||||
"prebuild-install": "^7.1.1",
|
||||
"semver": "^7.3.8",
|
||||
"semver": "^7.5.4",
|
||||
"simple-get": "^4.0.1",
|
||||
"tar-fs": "^2.1.1",
|
||||
"tar-fs": "^3.0.4",
|
||||
"tunnel-agent": "^0.6.0"
|
||||
},
|
||||
"engines": {
|
||||
@ -4833,6 +4853,31 @@
|
||||
"url": "https://opencollective.com/libvips"
|
||||
}
|
||||
},
|
||||
"node_modules/sharp/node_modules/node-addon-api": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz",
|
||||
"integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA=="
|
||||
},
|
||||
"node_modules/sharp/node_modules/tar-fs": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz",
|
||||
"integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==",
|
||||
"dependencies": {
|
||||
"mkdirp-classic": "^0.5.2",
|
||||
"pump": "^3.0.0",
|
||||
"tar-stream": "^3.1.5"
|
||||
}
|
||||
},
|
||||
"node_modules/sharp/node_modules/tar-stream": {
|
||||
"version": "3.1.6",
|
||||
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz",
|
||||
"integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==",
|
||||
"dependencies": {
|
||||
"b4a": "^1.6.4",
|
||||
"fast-fifo": "^1.2.0",
|
||||
"streamx": "^2.15.0"
|
||||
}
|
||||
},
|
||||
"node_modules/shebang-command": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
||||
@ -5022,6 +5067,15 @@
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/streamx": {
|
||||
"version": "2.15.6",
|
||||
"resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.6.tgz",
|
||||
"integrity": "sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==",
|
||||
"dependencies": {
|
||||
"fast-fifo": "^1.1.0",
|
||||
"queue-tick": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/string_decoder": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
|
||||
@ -5769,22 +5823,34 @@
|
||||
}
|
||||
},
|
||||
"@11ty/eleventy-img": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@11ty/eleventy-img/-/eleventy-img-3.0.0.tgz",
|
||||
"integrity": "sha512-qMotOn0ywxwuRd2zF2gNfJSwVQNbSBdzVQ2N1UPQeiXNZrxPGIitfraSf/OfWJbgGI9Cje12AtXdzr3Qc6wctw==",
|
||||
"version": "3.1.8",
|
||||
"resolved": "https://registry.npmjs.org/@11ty/eleventy-img/-/eleventy-img-3.1.8.tgz",
|
||||
"integrity": "sha512-9xVqbykggQAHTSiZEo6nUayS8l8nkM7RU8dCjGzikCc8FXSW/E17ytq7SaDngo24D3LZdD+3Gheh4zSeidrImA==",
|
||||
"requires": {
|
||||
"@11ty/eleventy-fetch": "^3.0.0",
|
||||
"@11ty/eleventy-fetch": "^4.0.0",
|
||||
"brotli-size": "^4.0.0",
|
||||
"debug": "^4.3.4",
|
||||
"entities": "^4.4.0",
|
||||
"entities": "^4.5.0",
|
||||
"image-size": "^1.0.2",
|
||||
"p-queue": "^6.6.2",
|
||||
"sharp": "^0.31.3"
|
||||
"sharp": "^0.32.6"
|
||||
},
|
||||
"dependencies": {
|
||||
"@11ty/eleventy-fetch": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@11ty/eleventy-fetch/-/eleventy-fetch-4.0.0.tgz",
|
||||
"integrity": "sha512-wGAd0r+8DUWr22fK5r07dOKuNY6ltA7hX+sJzngGZL1yJmuUVdM/xPQZ+iq0BFgf/ZeRdpVEzf2D0cpVZUuiTg==",
|
||||
"requires": {
|
||||
"debug": "^4.3.4",
|
||||
"flat-cache": "^3.0.4",
|
||||
"node-fetch": "^2.6.7",
|
||||
"p-queue": "^6.6.2"
|
||||
}
|
||||
},
|
||||
"entities": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz",
|
||||
"integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA=="
|
||||
"version": "4.5.0",
|
||||
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
|
||||
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -5792,6 +5858,7 @@
|
||||
"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",
|
||||
@ -6112,6 +6179,11 @@
|
||||
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
|
||||
"integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw=="
|
||||
},
|
||||
"b4a": {
|
||||
"version": "1.6.4",
|
||||
"resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz",
|
||||
"integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw=="
|
||||
},
|
||||
"babel-walk": {
|
||||
"version": "3.0.0-canary-5",
|
||||
"resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz",
|
||||
@ -6191,6 +6263,14 @@
|
||||
"fill-range": "^7.0.1"
|
||||
}
|
||||
},
|
||||
"brotli-size": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/brotli-size/-/brotli-size-4.0.0.tgz",
|
||||
"integrity": "sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA==",
|
||||
"requires": {
|
||||
"duplexer": "0.1.1"
|
||||
}
|
||||
},
|
||||
"browserslist": {
|
||||
"version": "4.21.5",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
|
||||
@ -6546,9 +6626,9 @@
|
||||
"integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg=="
|
||||
},
|
||||
"detect-libc": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
|
||||
"integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w=="
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz",
|
||||
"integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw=="
|
||||
},
|
||||
"detective": {
|
||||
"version": "5.2.1",
|
||||
@ -6628,6 +6708,11 @@
|
||||
"domhandler": "^4.2.0"
|
||||
}
|
||||
},
|
||||
"duplexer": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
|
||||
"integrity": "sha512-sxNZ+ljy+RA1maXoUReeqBBpBC6RLKmg5ewzV+x+mSETmWNoKdZN6vcQjpFROemza23hGFskJtFNoUWUaQ+R4Q=="
|
||||
},
|
||||
"eastasianwidth": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
|
||||
@ -6795,6 +6880,11 @@
|
||||
"is-extendable": "^0.1.0"
|
||||
}
|
||||
},
|
||||
"fast-fifo": {
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
|
||||
"integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ=="
|
||||
},
|
||||
"fast-glob": {
|
||||
"version": "3.2.12",
|
||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
|
||||
@ -7682,40 +7772,11 @@
|
||||
"requires": {}
|
||||
},
|
||||
"markdown-it-eleventy-img": {
|
||||
"version": "0.9.0",
|
||||
"resolved": "https://registry.npmjs.org/markdown-it-eleventy-img/-/markdown-it-eleventy-img-0.9.0.tgz",
|
||||
"integrity": "sha512-C2d7D5MRipB1XlFjiWYUsqtKiy0I+QVcZjk1ZRdKZn44U/wvtO6apyMU24ssgr3qxczUGCbh+vpX4ESQN8CM3Q==",
|
||||
"version": "0.10.1",
|
||||
"resolved": "https://registry.npmjs.org/markdown-it-eleventy-img/-/markdown-it-eleventy-img-0.10.1.tgz",
|
||||
"integrity": "sha512-MaPM7M1qFzbMj1kUeOiC4ZKICO+543bCDyCd7X3PvUdKwIX1dLFv00jO4D6rJPhiJTW7iFdHkRATuvgUdYCE2w==",
|
||||
"requires": {
|
||||
"@11ty/eleventy-img": "^2.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@11ty/eleventy-img": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@11ty/eleventy-img/-/eleventy-img-2.0.1.tgz",
|
||||
"integrity": "sha512-l30E+TszoovF/NK0WRc1oQoI42VxmYyM3O9cPiS20alSBHucX92RFdwl9HMDyRoh1g+App3+PomFIa5FKkb1Dw==",
|
||||
"requires": {
|
||||
"@11ty/eleventy-fetch": "^3.0.0",
|
||||
"debug": "^4.3.3",
|
||||
"image-size": "^1.0.1",
|
||||
"p-queue": "^6.6.2",
|
||||
"sharp": "^0.30.3"
|
||||
}
|
||||
},
|
||||
"sharp": {
|
||||
"version": "0.30.7",
|
||||
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.30.7.tgz",
|
||||
"integrity": "sha512-G+MY2YW33jgflKPTXXptVO28HvNOo9G3j0MybYAHeEmby+QuD2U98dT6ueht9cv/XDqZspSpIhoSW+BAKJ7Hig==",
|
||||
"requires": {
|
||||
"color": "^4.2.3",
|
||||
"detect-libc": "^2.0.1",
|
||||
"node-addon-api": "^5.0.0",
|
||||
"prebuild-install": "^7.1.1",
|
||||
"semver": "^7.3.7",
|
||||
"simple-get": "^4.0.1",
|
||||
"tar-fs": "^2.1.1",
|
||||
"tunnel-agent": "^0.6.0"
|
||||
}
|
||||
}
|
||||
"@11ty/eleventy-img": "^3.1.0"
|
||||
}
|
||||
},
|
||||
"markdown-it-emoji": {
|
||||
@ -7883,9 +7944,9 @@
|
||||
"integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ=="
|
||||
},
|
||||
"nanoid": {
|
||||
"version": "3.3.4",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
|
||||
"integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw=="
|
||||
"version": "3.3.7",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
|
||||
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g=="
|
||||
},
|
||||
"napi-build-utils": {
|
||||
"version": "1.0.2",
|
||||
@ -7910,11 +7971,6 @@
|
||||
"semver": "^7.3.5"
|
||||
}
|
||||
},
|
||||
"node-addon-api": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz",
|
||||
"integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA=="
|
||||
},
|
||||
"node-fetch": {
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz",
|
||||
@ -8242,11 +8298,11 @@
|
||||
}
|
||||
},
|
||||
"postcss": {
|
||||
"version": "8.4.21",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
|
||||
"integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
|
||||
"version": "8.4.32",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz",
|
||||
"integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==",
|
||||
"requires": {
|
||||
"nanoid": "^3.3.4",
|
||||
"nanoid": "^3.3.7",
|
||||
"picocolors": "^1.0.0",
|
||||
"source-map-js": "^1.0.2"
|
||||
}
|
||||
@ -8812,6 +8868,11 @@
|
||||
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
|
||||
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
|
||||
},
|
||||
"queue-tick": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
|
||||
"integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag=="
|
||||
},
|
||||
"quick-lru": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
|
||||
@ -9011,18 +9072,45 @@
|
||||
"integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow=="
|
||||
},
|
||||
"sharp": {
|
||||
"version": "0.31.3",
|
||||
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.31.3.tgz",
|
||||
"integrity": "sha512-XcR4+FCLBFKw1bdB+GEhnUNXNXvnt0tDo4WsBsraKymuo/IAuPuCBVAL2wIkUw2r/dwFW5Q5+g66Kwl2dgDFVg==",
|
||||
"version": "0.32.6",
|
||||
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz",
|
||||
"integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==",
|
||||
"requires": {
|
||||
"color": "^4.2.3",
|
||||
"detect-libc": "^2.0.1",
|
||||
"node-addon-api": "^5.0.0",
|
||||
"detect-libc": "^2.0.2",
|
||||
"node-addon-api": "^6.1.0",
|
||||
"prebuild-install": "^7.1.1",
|
||||
"semver": "^7.3.8",
|
||||
"semver": "^7.5.4",
|
||||
"simple-get": "^4.0.1",
|
||||
"tar-fs": "^2.1.1",
|
||||
"tar-fs": "^3.0.4",
|
||||
"tunnel-agent": "^0.6.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"node-addon-api": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz",
|
||||
"integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA=="
|
||||
},
|
||||
"tar-fs": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz",
|
||||
"integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==",
|
||||
"requires": {
|
||||
"mkdirp-classic": "^0.5.2",
|
||||
"pump": "^3.0.0",
|
||||
"tar-stream": "^3.1.5"
|
||||
}
|
||||
},
|
||||
"tar-stream": {
|
||||
"version": "3.1.6",
|
||||
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz",
|
||||
"integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==",
|
||||
"requires": {
|
||||
"b4a": "^1.6.4",
|
||||
"fast-fifo": "^1.2.0",
|
||||
"streamx": "^2.15.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shebang-command": {
|
||||
@ -9147,6 +9235,15 @@
|
||||
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
|
||||
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
|
||||
},
|
||||
"streamx": {
|
||||
"version": "2.15.6",
|
||||
"resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.6.tgz",
|
||||
"integrity": "sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==",
|
||||
"requires": {
|
||||
"fast-fifo": "^1.1.0",
|
||||
"queue-tick": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
|
||||
|
@ -20,7 +20,6 @@
|
||||
"@11ty/eleventy": "^2.0.0",
|
||||
"@11ty/eleventy-fetch": "^3.0.0",
|
||||
"@11ty/eleventy-img": "^3.0.0",
|
||||
"@11ty/eleventy-plugin-rss": "^1.2.0",
|
||||
"@11ty/eleventy-plugin-syntaxhighlight": "^4.2.0",
|
||||
"@toycode/markdown-it-class": "^1.2.4",
|
||||
"autoprefixer": "^10.4.13",
|
||||
@ -29,7 +28,7 @@
|
||||
"lodash": "^4.17.21",
|
||||
"markdown-it-abbr": "^1.0.4",
|
||||
"markdown-it-anchor": "^8.6.6",
|
||||
"markdown-it-eleventy-img": "^0.9.0",
|
||||
"markdown-it-eleventy-img": "^0.10.1",
|
||||
"markdown-it-emoji": "^2.0.2",
|
||||
"markdown-it-footnote": "^3.0.3",
|
||||
"markdown-it-link-attributes": "^4.0.1",
|
||||
@ -43,5 +42,8 @@
|
||||
"postcss-nested": "^6.0.0",
|
||||
"prettier": "^2.8.3",
|
||||
"tailwindcss": "^3.2.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@11ty/eleventy-plugin-rss": "^1.2.0"
|
||||
}
|
||||
}
|
||||
|
@ -6,6 +6,7 @@
|
||||
"site": {
|
||||
"name": "LewisDale.dev",
|
||||
"domain": "lewisdale.dev",
|
||||
"url": "https://lewisdale.dev",
|
||||
"description": "",
|
||||
"language": "en"
|
||||
}
|
||||
|
@ -5,16 +5,16 @@ includePrism: true
|
||||
<main class="wrapper-md stack-lg">
|
||||
<article class="stack-md h-entry">
|
||||
<h1 class="p-name"><a href="{{ url }}" class="u-url">{{ title | safe }}</a></h1>
|
||||
<p class="published">Published: <time class="dt-published" datetime="{{ date | rfc3339 }}">{{ date | dateDisplay }}</time></p>
|
||||
<p class="published">Published: <time class="dt-published" datetime="{{ date | dateToRfc3339 }}">{{ date | dateDisplay }}</time></p>
|
||||
<div class="e-content stack-md">
|
||||
{{ content | safe }}
|
||||
</div>
|
||||
{% if post.tags | length %}
|
||||
{% if tags | length %}
|
||||
<section>
|
||||
<h2>Tags:</h2>
|
||||
<ul role="list">
|
||||
{% for tag in post.tags %}
|
||||
<li><a class="p-category" href="/post/tag/{{ tag.slug }}" rel="tag">#{{ tag.name }}</a></li>
|
||||
{% for tag in tags %}
|
||||
<li><a class="p-category" href="/post/tag/{{ tag }}" rel="tag">#{{ tag }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</section>
|
||||
|
@ -13,7 +13,7 @@ pagination:
|
||||
{% for item in pagination.items %}
|
||||
<li class="stack-xs">
|
||||
<h2><a href="{{ item.url }}">{{ item.data.title | safe }}</a></h2>
|
||||
<time class="block" datetime="{{ item.date | rfc3339 }}">{{ item.date | dateDisplay }}</time>
|
||||
<time class="block" datetime="{{ item.date | dateToRfc3339 }}">{{ item.date | dateDisplay }}</time>
|
||||
<div class="e-content p-summary">{{ item.content | excerpt }}</div>
|
||||
<a href="{{ item.url }}" class="inline-block">Read more</a>
|
||||
</li>
|
||||
|
@ -2,24 +2,25 @@
|
||||
title: Blog
|
||||
layout: base.njk
|
||||
pagination:
|
||||
data: tags
|
||||
data: collections.tags
|
||||
size: 1
|
||||
alias: tag
|
||||
eleventyComputed:
|
||||
permalink: "/post/tag/{{ tag.slug }}/"
|
||||
feed: "/post/tag/{{ tag.slug }}/feed/"
|
||||
permalink: "/post/tag/{{ tag }}/"
|
||||
feed: "/post/tag/{{ tag }}/feed/"
|
||||
---
|
||||
|
||||
<main class="wrapper-md stack-lg">
|
||||
<h1>Posts tagged “{{ tag.name }}”</h1>
|
||||
<h1>Posts tagged “{{ tag }}”</h1>
|
||||
|
||||
<ol class="stack-xl" role='list'>
|
||||
{% for item in tag.posts %}
|
||||
{% set posts = collections.posts | filterBy(tag) %}
|
||||
{% for item in posts %}
|
||||
<li class="stack-xs">
|
||||
<h2><a href="/post/{{ item.slug }}">{{ item.title.rendered | safe }}</a></h2>
|
||||
<time datetime="{{ item.date | rfc3339 }}" class="block">{{ item.date | dateDisplay }}</time>
|
||||
{{ item.excerpt.rendered | safe }}
|
||||
<a href="/post/{{ item.slug }}" class="inline-block">Read more</a>
|
||||
<h2><a href="{{ item.url }}">{{ item.data.title | safe }}</a></h2>
|
||||
<time datetime="{{ item.date | dateToRfc3339 }}" class="block">{{ item.date | dateDisplay }}</time>
|
||||
<div class="e-content p-summary">{{ item.content | excerpt }}</div>
|
||||
<a href="{{ item.url }}" class="inline-block">Read more</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ol>
|
||||
|
29
src/feeds/atom.njk
Normal file
29
src/feeds/atom.njk
Normal file
@ -0,0 +1,29 @@
|
||||
---json
|
||||
{
|
||||
"permalink": "atom.xml",
|
||||
"eleventyExcludeFromCollections": true
|
||||
}
|
||||
---
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom" xml:base="{{ metadata.site.url }}">
|
||||
<title>{{ metadata.site.name }}</title>
|
||||
<subtitle>{{ metadata.site.description }}</subtitle>
|
||||
<link href="{{ permalink | absoluteUrl(metadata.site.url) }}" rel="self"/>
|
||||
<link href="{{ metadata.site.url }}"/>
|
||||
<updated>{{ collections.posts | getNewestCollectionItemDate | dateToRfc3339 }}</updated>
|
||||
<id>{{ metadata.site.url }}</id>
|
||||
<author>
|
||||
<name>{{ metadata.author.name }}</name>
|
||||
<uri>{{ metadata.site.url }}</uri>
|
||||
</author>
|
||||
{%- for post in collections.posts | reverse %}
|
||||
{%- set absolutePostUrl = post.url | absoluteUrl(metadata.site.url) %}
|
||||
<entry>
|
||||
<title>{{ post.data.title }}</title>
|
||||
<link href="{{ absolutePostUrl }}"/>
|
||||
<updated>{{ post.date | dateToRfc3339 }}</updated>
|
||||
<id>{{ absolutePostUrl }}</id>
|
||||
<content xml:lang="{{ metadata.site.language }}" type="html">{{ post.templateContent | htmlToAbsoluteUrls(absolutePostUrl) }}</content>
|
||||
</entry>
|
||||
{%- endfor %}
|
||||
</feed>
|
31
src/feeds/json.njk
Normal file
31
src/feeds/json.njk
Normal file
@ -0,0 +1,31 @@
|
||||
---json
|
||||
{
|
||||
"permalink": "feed.json",
|
||||
"eleventyExcludeFromCollections": true
|
||||
}
|
||||
---
|
||||
{
|
||||
"version": "https://jsonfeed.org/version/1.1",
|
||||
"title": "{{ metadata.site.name }}",
|
||||
"language": "{{ metadata.site.language }}",
|
||||
"home_page_url": "{{ metadata.site.url }}",
|
||||
"feed_url": "{{ permalink | absoluteUrl(metadata.site.url) }}",
|
||||
"description": "{{ metadata.site.description }}",
|
||||
"author": {
|
||||
"name": "{{ metadata.author.name }}",
|
||||
"url": "{{ metadata.site.url }}"
|
||||
},
|
||||
"items": [
|
||||
{%- for post in collections.posts | reverse %}
|
||||
{%- set absolutePostUrl = post.url | absoluteUrl(metadata.site.url) %}
|
||||
{
|
||||
"id": "{{ absolutePostUrl }}",
|
||||
"url": "{{ absolutePostUrl }}",
|
||||
"title": "{{ post.data.title }}",
|
||||
"content_html": {% if post.templateContent %}{{ post.templateContent | htmlToAbsoluteUrls(absolutePostUrl) | dump | safe }}{% else %}""{% endif %},
|
||||
"date_published": "{{ post.date | dateToRfc3339 }}"
|
||||
}
|
||||
{% if not loop.last %},{% endif %}
|
||||
{%- endfor %}
|
||||
]
|
||||
}
|
26
src/feeds/rss.njk
Normal file
26
src/feeds/rss.njk
Normal file
@ -0,0 +1,26 @@
|
||||
---
|
||||
permalink: /rss.xml
|
||||
eleventyExcludeFromCollections: true
|
||||
---
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:base="{{ metadata.site.url }}" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>{{ metadata.site.name }}</title>
|
||||
<link>{{ metadata.site.url }}</link>
|
||||
<atom:link href="{{ permalink | absoluteUrl(metadata.site.url) }}" rel="self" type="application/rss+xml" />
|
||||
<description>{{ metadata.site.description }}</description>
|
||||
<language>{{ metadata.site.language }}</language>
|
||||
{%- for post in collections.posts | reverse %}
|
||||
{%- set absolutePostUrl = post.url | absoluteUrl(metadata.site.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>
|
||||
|
31
src/feeds/tags/atom.njk
Normal file
31
src/feeds/tags/atom.njk
Normal file
@ -0,0 +1,31 @@
|
||||
---
|
||||
pagination:
|
||||
data: collections.tags
|
||||
size: 1
|
||||
alias: tag
|
||||
eleventyComputed:
|
||||
permalink: "/post/tag/{{ tag }}/atom.xml"
|
||||
---
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom" xml:base="{{ metadata.site.url }}">
|
||||
<title>{{ metadata.site.name }}</title>
|
||||
<subtitle>Posts tagged #{{ tag }}</subtitle>
|
||||
<link href="{{ permalink | absoluteUrl(metadata.site.url) }}" rel="self"/>
|
||||
<link href="{{ metadata.site.url }}"/>
|
||||
<updated>{{ collections.posts | getNewestCollectionItemDate | dateToRfc3339 }}</updated>
|
||||
<id>{{ metadata.site.url }}</id>
|
||||
<author>
|
||||
<name>{{ metadata.author.name }}</name>
|
||||
<uri>{{ metadata.site.url }}</uri>
|
||||
</author>
|
||||
{%- for post in collections.posts | filterBy(tag) | reverse %}
|
||||
{%- set absolutePostUrl = post.url | absoluteUrl(metadata.site.url) %}
|
||||
<entry>
|
||||
<title>{{ post.data.title }}</title>
|
||||
<link href="{{ absolutePostUrl }}"/>
|
||||
<updated>{{ post.date | dateToRfc3339 }}</updated>
|
||||
<id>{{ absolutePostUrl }}</id>
|
||||
<content xml:lang="{{ metadata.site.language }}" type="html">{{ post.templateContent | htmlToAbsoluteUrls(absolutePostUrl) }}</content>
|
||||
</entry>
|
||||
{%- endfor %}
|
||||
</feed>
|
33
src/feeds/tags/json.njk
Normal file
33
src/feeds/tags/json.njk
Normal file
@ -0,0 +1,33 @@
|
||||
---
|
||||
pagination:
|
||||
data: collections.tags
|
||||
size: 1
|
||||
alias: tag
|
||||
eleventyComputed:
|
||||
permalink: "/post/tag/{{ tag }}/feed.json"
|
||||
---
|
||||
{
|
||||
"version": "https://jsonfeed.org/version/1.1",
|
||||
"title": "{{ metadata.site.name }}",
|
||||
"language": "{{ metadata.site.language }}",
|
||||
"home_page_url": "{{ metadata.site.url }}",
|
||||
"feed_url": "{{ permalink | absoluteUrl(metadata.site.url) }}",
|
||||
"description": "Posts tagged #{{ tag }}",
|
||||
"author": {
|
||||
"name": "{{ metadata.author.name }}",
|
||||
"url": "{{ metadata.site.url }}"
|
||||
},
|
||||
"items": [
|
||||
{%- for post in collections.posts | filterBy(tag) | reverse %}
|
||||
{%- set absolutePostUrl = post.url | absoluteUrl(metadata.site.url) %}
|
||||
{
|
||||
"id": "{{ absolutePostUrl }}",
|
||||
"url": "{{ absolutePostUrl }}",
|
||||
"title": "{{ post.data.title }}",
|
||||
"content_html": {% if post.templateContent %}{{ post.templateContent | htmlToAbsoluteUrls(absolutePostUrl) | dump | safe }}{% else %}""{% endif %},
|
||||
"date_published": "{{ post.date | dateToRfc3339 }}"
|
||||
}
|
||||
{% if not loop.last %},{% endif %}
|
||||
{%- endfor %}
|
||||
]
|
||||
}
|
30
src/feeds/tags/rss.njk
Normal file
30
src/feeds/tags/rss.njk
Normal file
@ -0,0 +1,30 @@
|
||||
---
|
||||
pagination:
|
||||
data: collections.tags
|
||||
size: 1
|
||||
alias: tag
|
||||
eleventyComputed:
|
||||
permalink: "/post/tag/{{ tag }}/rss.xml"
|
||||
---
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:base="{{ metadata.site.url }}" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>{{ metadata.site.name }}</title>
|
||||
<link>{{ metadata.site.url }}</link>
|
||||
<atom:link href="{{ permalink | absoluteUrl(metadata.site.url) }}" rel="self" type="application/rss+xml" />
|
||||
<description>Posts tagged #{{ tag }}</description>
|
||||
<language>{{ metadata.site.language }}</language>
|
||||
{% set posts = collections.posts | filterBy(tag) | reverse %}
|
||||
{%- for post in posts %}
|
||||
{%- set absolutePostUrl = post.url | absoluteUrl(metadata.site.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>
|
@ -4,31 +4,13 @@ permalink: /sitemap.xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://{{ metadata.site.domain }}/</loc>
|
||||
<loc>{{ metadata.site.url }}/</loc>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
{% for page in collections.all %}
|
||||
<url>
|
||||
<loc>https://{{ metadata.site.domain }}/now/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://{{ metadata.site.domain }}/blog/</loc>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://{{ metadata.site.domain }}/links/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://{{ metadata.site.domain }}/user-manual.html</loc>
|
||||
</url>
|
||||
{% for tag in tags %}
|
||||
<url>
|
||||
<loc>https://{{ metadata.site.domain }}/post/tag/{{ tag.slug }}/</loc>
|
||||
</url>
|
||||
{% endfor %}
|
||||
{% for post in posts %}
|
||||
<url>
|
||||
<loc>https://{{ metadata.site.domain }}/post/{{ post.slug }}/</loc>
|
||||
<lastmod>{{ post.date | rfc3339 }}</lastmod>
|
||||
<loc>{{ page.url | absoluteUrl(metadata.site.url) }}</loc>
|
||||
<lastmod>{{ page.date | dateToRfc3339 }}</lastmod>
|
||||
</url>
|
||||
{% endfor %}
|
||||
</urlset>
|
||||
|
Loading…
Reference in New Issue
Block a user