import lume from "lume/mod.ts"; import brotli from "lume/plugins/brotli.ts"; import code_highlight from "lume/plugins/code_highlight.ts"; import feed from "lume/plugins/feed.ts"; import lightningcss from "lume/plugins/lightningcss.ts"; import icons from "lume/plugins/icons.ts"; import inline from "lume/plugins/inline.ts"; import metas from "lume/plugins/metas.ts"; import minify_html from "lume/plugins/minify_html.ts"; import nav from "lume/plugins/nav.ts"; import og_images from "lume/plugins/og_images.ts"; import pagefind from "lume/plugins/pagefind.ts"; import picture from "lume/plugins/picture.ts"; import postcss from "lume/plugins/postcss.ts"; import purgecss from "lume/plugins/purgecss.ts"; import relations from "lume/plugins/relations.ts"; import robots from "lume/plugins/robots.ts"; import sitemap from "lume/plugins/sitemap.ts"; import slugify_urls from "lume/plugins/slugify_urls.ts"; import source_maps from "lume/plugins/source_maps.ts"; import sri from "lume/plugins/sri.ts"; import svgo from "lume/plugins/svgo.ts"; import tailwindcss from "lume/plugins/tailwindcss.ts"; import toml from "lume/plugins/toml.ts"; import transform_images from "lume/plugins/transform_images.ts"; import catppuccin from "npm:@catppuccin/tailwindcss"; const site = lume({ src: "./src", location: new URL("https://blog.pyrox.dev"), }); site.loadAssets([".css"]); site.copy([".woff2"]); site.use(code_highlight()); site.use(icons()); site.use(inline()); site.use(metas()); site.use(minify_html()); site.use(nav()); site.use(og_images()); site.use(pagefind()); site.use(picture()); site.use(transform_images()); site.use(relations()); site.use(robots()); site.use(sitemap()); site.use(slugify_urls()); site.use(sri()); site.use(svgo()); site.use(toml()); // Tailwind CSS site.use(tailwindcss({ extensions: [".html", ".vto"], options: { plugins: [catppuccin], safelist: ['latte'] } })) site.use(postcss()) // RSS/JSON Feed Generation site.use(feed({ output: ["/blog.rss", "/blog.json"], query: "type=blog", sort: "date=desc", info: { title: "dish blog", description: "dish's thoughts on many things", published: new Date(), lang: "en", generator: true, authorName: "dish", authorUrl: "https://blog.pyrox.dev", }, items: { title: "=title", description: "=summary", published: "=published", updated: "=updated || undefined", content: "=children", lang: "=lang", image: "=banner", authorName: "=author.name", authorUrl: "=author.url", }, })); // CSS postprocessing site.use(purgecss()) site.use(lightningcss({ options: { minify: true, bundle: false, } })); // Source Map Generation site.use(source_maps()); // Compress everything with Brotli site.use(brotli({ extensions: [ ".html", ".css", ".js", ".mjs", ".svg", ".json", ".xml", ".txt", ".rss", ".map" ] })); export default site;