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' } }; };