maia.crimew.gay/.eleventy.js

66 lines
1.8 KiB
JavaScript
Raw Normal View History

2023-05-19 12:12:14 +00:00
const syntaxHighlight = require('@11ty/eleventy-plugin-syntaxhighlight');
2023-01-21 17:21:09 +00:00
const pluginRss = require('@11ty/eleventy-plugin-rss');
2023-05-19 11:56:16 +00:00
const timeToRead = require('eleventy-plugin-time-to-read');
2023-05-19 12:12:14 +00:00
const safeLinks = require('@sardine/eleventy-plugin-external-links');
2022-05-31 13:09:45 +00:00
module.exports = function (eleventyConfig) {
const parseDate = (str) => {
if (str instanceof Date) {
return str;
}
2022-05-31 14:10:07 +00:00
return Date.parse(str);
2022-05-31 13:09:45 +00:00
};
2022-05-31 14:10:07 +00:00
const formatPart = (part, date) =>
new Intl.DateTimeFormat("en", part).format(date);
2023-05-19 12:20:25 +00:00
eleventyConfig.setNunjucksEnvironmentOptions({
lstripBlocks: true,
trimBlocks: true
});
2023-05-19 11:56:16 +00:00
eleventyConfig.addPlugin(pluginRss);
eleventyConfig.addPlugin(syntaxHighlight);
eleventyConfig.addPlugin(timeToRead);
2023-05-19 12:12:14 +00:00
eleventyConfig.addPlugin(safeLinks);
2022-05-31 14:10:07 +00:00
2022-05-31 13:09:45 +00:00
eleventyConfig.addPassthroughCopy({ "src/static": "/" });
eleventyConfig.addFilter("date_to_datetime", (obj) => {
const date = parseDate(obj);
2022-05-31 14:10:07 +00:00
return date.toISOString();
2022-05-31 13:09:45 +00:00
});
2022-05-31 14:10:07 +00:00
eleventyConfig.addFilter("date_formatted", (obj) => {
const date = parseDate(obj);
const month = formatPart({ month: "short" }, date);
const day = formatPart({ day: "numeric" }, date);
const year = formatPart({ year: "numeric" }, date);
return `${month} ${day}, ${year}`;
});
2023-01-21 17:21:09 +00:00
eleventyConfig.addFilter('urlescape', str => {
return str.split('/').map(part => encodeURI(part)).join('/')
})
2022-05-31 14:10:07 +00:00
eleventyConfig.addCollection('posts', collection => {
return collection.getFilteredByGlob('src/posts/*.md').reverse()
})
2022-05-31 13:09:45 +00:00
return {
templateFormats: ["njk", "md", "html"],
dir: {
input: "src",
includes: "_includes",
data: "_data",
output: "www",
},
markdownTemplateEngine: "njk",
htmlTemplateEngine: "njk",
dataTemplateEngine: "njk",
passthroughFileCopy: false,
};
};