Files
start9.com/.eleventy.js
Matt Hill bf56fe06d6 demo
2026-03-23 15:50:12 -06:00

54 lines
1.7 KiB
JavaScript

const faviconPlugin = require("eleventy-plugin-gen-favicons");
const format = require("date-fns/format");
const pluginSEO = require("eleventy-plugin-seo");
const tinysvg = require("@sardine/eleventy-plugin-tinysvg");
const slinkity = require("slinkity");
// for 404 callback
const fs = require("fs");
const NOT_FOUND_PATH = "_site/public/404.html";
module.exports = function (eleventyConfig) {
eleventyConfig.addPassthroughCopy("./src/assets/proxy.pac");
eleventyConfig.addPassthroughCopy("public");
// plugins
eleventyConfig.addPlugin(faviconPlugin, { outputDir: "./public" });
eleventyConfig.addPlugin(slinkity.plugin, slinkity.defineConfig({}));
eleventyConfig.addPlugin(pluginSEO, require("./src/_data/seo.json"));
eleventyConfig.addPlugin(tinysvg, {
baseUrl: "src/_includes/svgs/",
});
// filters
eleventyConfig.addFilter("date", function (date, dateFormat) {
return format(date, dateFormat);
});
// 404 callback
eleventyConfig.setBrowserSyncConfig({
callbacks: {
ready: function (err, bs) {
bs.addMiddleware("*", (req, res) => {
if (!fs.existsSync(NOT_FOUND_PATH)) {
throw new Error(
`Expected a \`${NOT_FOUND_PATH}\` file but could not find one. Did you create a 404.html template?`,
);
}
const content_404 = fs.readFileSync(NOT_FOUND_PATH);
// Add 404 http status code in request header.
res.writeHead(404, { "Content-Type": "text/html; charset=UTF-8" });
// Provides the 404 content without redirect.
res.write(content_404);
res.end();
});
},
},
});
return {
dir: { input: "src", output: "_site", data: "_data" },
};
};