11ty-theme/.eleventy.js
2023-06-24 13:07:06 +02:00

57 lines
1.6 KiB
JavaScript

const pluginRss = require("@11ty/eleventy-plugin-rss");
const markdownIt = require('./11ty/markdown.js');
const customShortcodes = require('./11ty/shortcodes.js');
const {
getDatetime,
getMonthDay,
getYear,
toFullDate,
} = require("./src/filters/date.js")
module.exports = config => {
config.watchIgnores.add("/src/scss/components/config/_palette.scss.njk");
config.watchIgnores.add("/src/scss/components/config/_palette.scss");
config.setUseGitIgnore(false);
config.setLibrary('md', markdownIt);
config.addPlugin(pluginRss);
config.addFilter("getDatetime", getDatetime)
config.addFilter("getMonthDay", getMonthDay)
config.addFilter("getYear", getYear)
config.addFilter("toFullDate", toFullDate)
config.addShortcode('fetch', customShortcodes.fetch);
config.addPairedShortcode('full', customShortcodes.full);
config.addPassthroughCopy({"./src/_includes/js/" : "/js"});
config.addLayoutAlias('home', 'layouts/home.html');
config.addLayoutAlias('post', 'layouts/article.html');
config.addLayoutAlias('list', 'layouts/list.html');
config.addCollection('blog', collection => {
return [...collection.getFilteredByGlob('./src/posts/*.md')].reverse();
});
// Return all the tags used in a collection
config.addFilter("getAllTags", collection => {
let tagSet = new Set();
for(let item of collection) {
(item.data.tags || []).forEach(tag => tagSet.add(tag));
}
return Array.from(tagSet);
});
return {
markdownTemplateEngine: 'njk',
dataTemplateEngine: 'njk',
htmlTemplateEngine: 'njk',
dir: {
input: 'src',
output: 'dist'
}
};
};