User avatar
privTri Volpeon areonNSmol @volpeon@icy.wyvern.rip
1mo
The configuration is wild, but that's what you get for maximum flexibility
const pipeline = Pipeline.create()
	.use(fscache())
	.use(query())
	.use(modules<Page<".html", string> | Page<".tsx", JSX.Children> | Page<".strapi", Node[]>>())
	.use(
		sass({
			loadPaths: [
				"submodules",
				"submodules/iro-design/src",
				"submodules/iro-sass/src",
				"submodules/include-media/dist",
			],
		}),
	)
	.use(mdx())
	.use(markdown())
	.use(strapi())
	.use(jsx())
	.use(timestamps())
	.use(urls({ base: "https://volpeon.ink/" }))
	.use(feeds())
	.use(sitemap())
	.use(assets())
	.use(hash())
	.redirect("pages root", (page) => page.url.replace(/^\/pages\//, "/"))
	.redirect("scripts+styles assets", (page) =>
		page.url.replace(/^\/(scripts|styles)\//, "/assets/"),
	)
	.use(templates())
	.use(jsx())
	.use(icons())
	.use(
		images({
			allowedOrigins: ["strapi.volpeon.ink"],
			defaults: { formats: ["avif", "webp", "png"], densities: [1, 2] },
		}),
	)
	.use(transformImages());

const site = new Site(pipeline, {});