website/.eleventy.js
2023-12-24 12:17:13 +01:00

42 lines
1.3 KiB
JavaScript

const { DateTime } = require("luxon")
const syntaxHighlight = require("@11ty/eleventy-plugin-syntaxhighlight")
module.exports = function (eleventyConfig) {
eleventyConfig.addPlugin(syntaxHighlight)
//eleventyConfig.addPassthroughCopy("css")
eleventyConfig.addPassthroughCopy("src/**/*.png")
eleventyConfig.addPassthroughCopy("src/**/*.jpg")
eleventyConfig.addPassthroughCopy("src/css/*.css")
eleventyConfig.addPassthroughCopy("src/libs/**/*.js")
eleventyConfig.addPassthroughCopy({ "src/_assets/": "assets" })
eleventyConfig.addFilter("formatDate", (dateObj) => {
return DateTime.fromJSDate(dateObj, {
zone: "Europe/Berlin",
})
.setLocale("de")
.toLocaleString(DateTime.DATE_FULL)
})
// Filter for showing excerpts of posts on the "/posts/" site, limited to 180 characters (about 4 lines on mobile)
eleventyConfig.addFilter("createExcerpt", (post) => {
// This removes "<" and ">" from the output
const content = post.replace(/(<([^>]+)>)/gi, "")
return content.substr(0, content.lastIndexOf(" ", 450)) + "..."
})
eleventyConfig.addFilter("stringify", (object) => {
return JSON.stringify(object, null, 2)
})
return {
passthroughFileCopy: true,
dir: {
input: "src",
includes: "_includes",
data: "_data",
output: "build",
},
}
}