module.exports = function(eleventyConfig) { // Pass through static assets from the "src" directory eleventyConfig.addPassthroughCopy("src/css"); eleventyConfig.addPassthroughCopy("src/js"); eleventyConfig.addPassthroughCopy("src/resume"); eleventyConfig.addPassthroughCopy("src/assets/images"); eleventyConfig.addPassthroughCopy({ "favicon" : "/" } ); eleventyConfig.addPassthroughCopy({ 'src/robots.txt': '/robots.txt' }); eleventyConfig.addPassthroughCopy({ 'src/sitemap.xml': '/sitemap.xml' }); // Add a filter for readable dates using vanilla JS eleventyConfig.addFilter("readableDate", dateObj => { // The toLocaleDateString method can be used to format dates // without any external libraries. // The 'UTC' timeZone option is added to prevent off-by-one day errors. return new Date(dateObj).toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric', timeZone: 'UTC' }); }); // Add htmlDateString filter for sitemap eleventyConfig.addFilter("htmlDateString", dateObj => { if (!dateObj) return ""; // Format date as YYYY-MM-DD for sitemaps const d = new Date(dateObj); return d.toISOString().split("T")[0]; }); // Shortcode for creating a callout box // This is a "paired shortcode" which means it has a start and end tag. eleventyConfig.addPairedShortcode("callout", function(content, title) { return ``; }); // Add a shortcode for the current year for the footer eleventyConfig.addShortcode("year", () => `${new Date().getFullYear()}`); return { // Set the source and output directories dir: { input: "src", output: "_site", includes: "_includes", data: "_data" }, markdownTemplateEngine: "njk", htmlTemplateEngine: "njk", dataTemplateEngine: "njk", }; };