const { DateTime } = require('luxon') const fs = require('fs').promises const path = require('path') const markdownIt = require('markdown-it') const markdownItAnchor = require('markdown-it-anchor') const pluginImage = require('@11ty/eleventy-img') // Widths in pixels of responsive images to be generated const IMAGE_SIZES = [300, 600, 900, 1200] module.exports = function(eleventyConfig) { // https://www.11ty.dev/docs/data-deep-merge/ eleventyConfig.setDataDeepMerge(true) // Optimized images // https://www.11ty.dev/docs/plugins/image/#make-your-own-markup eleventyConfig.addShortcode('image', async (src, alt) => { const metadata = await pluginImage(`./_src${src}`, { widths: [...IMAGE_SIZES, 'auto'], formats: ['auto', 'webp', 'avif'], // https://www.11ty.dev/docs/plugins/image/#custom-filenames filenameFormat: (id, src, width, format) => `${path.basename(src,path.extname(src))}-${width}w.${format}`, // https://alexpeterhall.com/blog/2021/04/05/responsive-images-eleventy/#eleventy-configuration urlPath: path.dirname(src), outputDir: `_site/${path.dirname(src)}`, }) const lowsrc = metadata.webp[0] const highsrc = metadata.webp[metadata.webp.length - 1] return `${Object.values(metadata).map(imageFormat => `\t`).join('')}${alt}` }) // Video embed eleventyConfig.addShortcode('vid', (src, autoplay=false) => `` ) eleventyConfig.addShortcode('vidraw', (src) => `` ) // YouTube eleventyConfig.addShortcode('yt', (shortcode) => `` ) // Audio embed eleventyConfig.addShortcode('audio', (src, fmt) => `` ) // iFrame eleventyConfig.addShortcode('iframe', (url, height) => `