-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patheleventy.config.js
83 lines (74 loc) · 2.65 KB
/
eleventy.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import { IdAttributePlugin, EleventyHtmlBasePlugin, RenderPlugin, InputPathToUrlTransformPlugin } from '@11ty/eleventy';
import syntaxHighlightPlugin from "@11ty/eleventy-plugin-syntaxhighlight";
import { feedPlugin } from "@11ty/eleventy-plugin-rss";
import eleventyNavigationPlugin from "@11ty/eleventy-navigation";
import directoryOutputPlugin from "@11ty/eleventy-plugin-directory-output";
import { eleventyImageTransformPlugin } from "@11ty/eleventy-img"
import pluginWebc from "@11ty/eleventy-plugin-webc";
import { DateTime } from "luxon";
import { readFileSync } from 'node:fs';
/** @param {import("@11ty/eleventy").UserConfig} eleventyConfig */
export default async function (eleventyConfig) {
eleventyConfig.addPlugin(EleventyHtmlBasePlugin);
eleventyConfig.addPlugin(RenderPlugin);
eleventyConfig.addPlugin(InputPathToUrlTransformPlugin);
eleventyConfig.addPlugin(IdAttributePlugin);
eleventyConfig.addPlugin(syntaxHighlightPlugin);
eleventyConfig.addPlugin(feedPlugin, {
type: "atom",
outputPath: "/atom.xml",
collection: {
name: "post"
},
metadata: {
language: "en-GB",
title: "Sudomsg",
subtitle: "Messages from Root",
base: "https://sudomsg.com/",
author: {
name: "Marc Pervaz Boocha",
email: "[email protected]",
}
}
});
eleventyConfig.addPlugin(eleventyNavigationPlugin);
eleventyConfig.addPlugin(directoryOutputPlugin);
eleventyConfig.addPlugin(pluginWebc, {
components: [
"npm:@11ty/eleventy-plugin-syntaxhighlight/*.webc",
],
});
eleventyConfig.addPassthroughCopy({
"public/": "/",
});
eleventyConfig.addPlugin(eleventyImageTransformPlugin, {
extensions: "html",
formats: ["webp", "jpeg", "svg", "avif", "auto", "png"],
widths: [128, 256, 512, 1024, "auto"],
defaultAttributes: {
sizes: "auto",
decoding: "async",
loading: "lazy"
},
});
eleventyConfig.setServerPassthroughCopyBehavior("passthrough");
eleventyConfig.addFilter("readableDate", (dateObj, format, zone) => {
return DateTime.fromJSDate(dateObj, { zone: zone || "utc" }).toFormat(format || "dd LLLL yyyy")
});
eleventyConfig.addFilter('htmlDateString', dateObj => DateTime.fromJSDate(dateObj, { zone: 'utc' }).toFormat('yyyy-LL-dd'));
eleventyConfig.addShortcode('schema', type => (type instanceof URL ? type : new URL(type, "http://schema.org/")).href);
eleventyConfig.addFilter('embed', path => readFileSync(path, { encoding: 'utf8' }));
eleventyConfig.setQuietMode(true);
eleventyConfig.setDynamicPermalinks(false);
return {
markdownTemplateEngine: "njk",
htmlTemplateEngine: "webc",
dir: {
output: "dist",
input: "src",
includes: "../includes",
data: "../data",
components: "components",
}
};
}