ese-website/eleventy.config.js

88 lines
2.8 KiB
JavaScript
Raw Normal View History

2024-09-14 10:59:22 +02:00
const { EleventyHtmlBasePlugin, EleventyI18nPlugin } = require("@11ty/eleventy");
2024-09-13 17:18:41 +02:00
const eleventyNavigationPlugin = require("@11ty/eleventy-navigation");
2024-09-15 13:18:05 +02:00
const bundlerPlugin = require("@11ty/eleventy-plugin-bundle");
2024-09-24 17:54:42 +02:00
const pluginIcons = require('eleventy-plugin-icons');
2024-09-26 15:39:47 +02:00
const yaml = require("js-yaml");
2024-09-14 12:44:27 +02:00
const fs = require('fs');
2024-09-12 13:41:52 +02:00
module.exports = function(eleventyConfig) {
eleventyConfig.addPlugin(EleventyHtmlBasePlugin);
2024-09-13 17:18:41 +02:00
eleventyConfig.addPlugin(eleventyNavigationPlugin);
2024-09-14 10:59:22 +02:00
eleventyConfig.addPlugin(EleventyI18nPlugin, {
defaultLanguage: "de",
});
2024-09-15 13:18:05 +02:00
eleventyConfig.addPlugin(bundlerPlugin);
2024-09-24 17:54:42 +02:00
let fontawesomePath = "node_modules/@fortawesome/fontawesome-free/svgs";
eleventyConfig.addPlugin(pluginIcons, {
sources: [
{ name: "regular", path: `${fontawesomePath}/regular`, default: true },
{ name: "solid", path: `${fontawesomePath}/solid` },
{ name: "brands", path: `${fontawesomePath}/brands` },
],
});
2024-09-12 13:41:52 +02:00
// process the logo files
eleventyConfig.addTemplateFormats("logo.svg");
eleventyConfig.addExtension("logo.svg", {
outputFileExtension: "svg",
compile: async (inputContent) => {
return async (data) => {
// insert year
let svg = inputContent.replace("{{year}}", String(data.ese.year).slice(-2));
// insert color
svg = svg.replaceAll("{{eseColor}}", data.ese.color);
// render text to path
// TODO replace with ESM import once we switch to Eleventy v3
const Session = (await import('svg-text-to-path')).default;
let session = new Session(svg, {
fonts: {
"Aileron Thin": [{
wght: 400,
source: "./submodules/aileron/fonts/Aileron-Thin.ttf",
}]
}
});
await session.replaceAll();
return session.getSvgString();
};
}
});
2024-09-26 15:39:47 +02:00
eleventyConfig.addDataExtension("yaml, yml", yaml.load);
2024-09-14 10:59:22 +02:00
eleventyConfig.addFilter("pageLang", function(value) {
return value.filter(item => item.page.lang === this.page.lang)
});
2024-09-20 14:46:23 +02:00
// copy aileron font
eleventyConfig.addPassthroughCopy({'./submodules/aileron/fonts/*.(ttf|woff|woff2)': 'fonts'})
eleventyConfig.addPassthroughCopy({'./submodules/aileron/aileron.lite.min.css': 'aileron.lite.min.css'})
2024-09-20 18:39:35 +02:00
// copy static files
eleventyConfig.addPassthroughCopy('./static')
2024-09-15 17:23:25 +02:00
2024-09-14 12:44:27 +02:00
// copy german start page to root url
eleventyConfig.on(
"eleventy.after",
async ({ dir, runMode, outputMode }) => {
if (outputMode === "fs") {
fs.copyFile(`${dir.output}/de/index.html`, `${dir.output}/index.html`, (err) => {
if (err) console.log(err);
});
}
}
);
const eseData = yaml.load(fs.readFileSync('./content/_data/ese.yaml'));
2024-09-12 13:41:52 +02:00
return {
dir: {
input: "content",
2024-09-13 17:04:16 +02:00
includes: "../_includes",
2024-09-12 13:41:52 +02:00
},
pathPrefix: `/${eseData.year}/`,
2024-09-12 13:41:52 +02:00
}
};