import { EleventyHtmlBasePlugin, RenderPlugin, InputPathToUrlTransformPlugin } from '@11ty/eleventy'; import syntaxHighlightPlugin from "@11ty/eleventy-plugin-syntaxhighlight"; import { feedPlugin } from "@11ty/eleventy-plugin-rss"; import eleventyNavigationPlugin from "@11ty/eleventy-navigation"; import directoryOutputPlugin from "@11ty/eleventy-plugin-directory-output"; import { eleventyImageTransformPlugin } from "@11ty/eleventy-img"; import pluginWebc from "@11ty/eleventy-plugin-webc"; import { DateTime } from "luxon"; import postcss from "postcss"; import cssnano from 'cssnano'; import htmlmin from "html-minifier"; export default async function(eleventyConfig) { eleventyConfig.addPlugin(EleventyHtmlBasePlugin); eleventyConfig.addPlugin(RenderPlugin); eleventyConfig.addPlugin(InputPathToUrlTransformPlugin); eleventyConfig.addPlugin(syntaxHighlightPlugin); eleventyConfig.addPlugin(feedPlugin, { type: "atom", outputPath: "/atom.xml", collection: { name: "post" }, metadata: { language: "en", title: "Sudomsg", subtitle: "Messages from Root", base: "https://sudomsg.com/", author: { name: "Marc Pervaz Boocha", email: "mboocha@sudomsg.com", } } }); eleventyConfig.addPlugin(eleventyNavigationPlugin); eleventyConfig.addPlugin(directoryOutputPlugin); eleventyConfig.addPlugin(pluginWebc, { bundlePluginOptions: { transforms: [ async function(content) { if (this.type === 'css') { let result = await postcss([ cssnano({ preset: "default", }) ]).process(content, { from: this.page.inputPath, to: null }); return result.css; } return content; } ] }, }); eleventyConfig.addTransform("htmlmin", function(content) { if (this.page.outputPath && this.page.outputPath.endsWith(".html")) { let minified = htmlmin.minify(content, { useShortDoctype: true, removeComments: true, collapseWhitespace: true, }); return minified; } return content; }); eleventyConfig.addPassthroughCopy({ "./public/": "/", }); eleventyConfig.addPlugin(eleventyImageTransformPlugin, { extensions: "html", formats: ["webp", "jpeg", "svg", "avif", "auto", "png"], defaultAttributes: { loading: "lazy", decoding: "async", }, }); eleventyConfig.setServerPassthroughCopyBehavior("passthrough"); eleventyConfig.addFilter("readableDate", (dateObj, format, zone) => { return DateTime.fromJSDate(dateObj, { zone: zone || "utc" }).toFormat(format || "dd LLLL yyyy"); }); eleventyConfig.addFilter('htmlDateString', (dateObj) => { return DateTime.fromJSDate(dateObj, { zone: 'utc' }).toFormat('yyyy-LL-dd'); }); eleventyConfig.addShortcode('schema', (type) => { return (type instanceof URL ? type : new URL(type, "http://schema.org/")).href; }); eleventyConfig.setQuietMode(true); eleventyConfig.setDynamicPermalinks(false); return { markdownTemplateEngine: "njk", htmlTemplateEngine: "webc", output: "dist" } }