mirror of
https://github.com/Start9Labs/start9.com.git
synced 2026-03-26 10:21:54 +00:00
54 lines
1.7 KiB
JavaScript
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" },
|
|
};
|
|
};
|