-
Notifications
You must be signed in to change notification settings - Fork 0
/
.eleventy.js
92 lines (82 loc) · 2.77 KB
/
.eleventy.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
84
85
86
87
88
89
90
91
92
import extractExcerpt from "./src/11ty/extract_excerpt.cjs";
import imageUrl from "./src/11ty/image_url.cjs";
import minifyHtml from "./src/11ty/minify_html.cjs";
import pluginRss from "@11ty/eleventy-plugin-rss";
import similarPosts from "./src/11ty/similar_posts.cjs";
import syntaxHighlight from "@11ty/eleventy-plugin-syntaxhighlight";
import trackingScript from "./src/11ty/tracking_script.cjs";
import typeCollection from "./src/11ty/type_collection.cjs";
import { eleventyImageTransformPlugin } from "@11ty/eleventy-img";
import EleventyVitePlugin from "@11ty/eleventy-plugin-vite";
export default async function (eleventyConfig) {
eleventyConfig.addPlugin(pluginRss);
eleventyConfig.addPlugin(EleventyVitePlugin, {
viteOptions: {
build: {
rollupOptions: {
output: {
assetFileNames: (assetInfo) => {
const imageExtensions = [
".webp",
".jpeg",
".png",
".svg",
".gif",
".jpg",
];
if (imageExtensions.some((ext) => assetInfo.name.endsWith(ext))) {
return `img/${assetInfo.name}`;
}
return "assets/css/main.[hash].css";
},
},
},
},
},
});
eleventyConfig.addPlugin(syntaxHighlight);
eleventyConfig.addPlugin(eleventyImageTransformPlugin, {
extensions: "html",
cacheOptions: {
duration: "10y",
},
formats: ["webp", "jpeg"],
widths: ["auto"],
urlPath: "/img/",
defaultAttributes: {
loading: "lazy",
decoding: "async",
},
});
eleventyConfig.setDataDeepMerge(true);
eleventyConfig.setUseGitIgnore(false);
eleventyConfig.addPassthroughCopy("./src/site/css");
eleventyConfig.addPassthroughCopy("./src/site/js");
eleventyConfig.addPassthroughCopy("./public");
eleventyConfig.addTransform("minifyHtml", minifyHtml);
eleventyConfig.addCollection("articles", typeCollection("article"));
eleventyConfig.addCollection("photos", typeCollection("photo"));
eleventyConfig.addCollection("tagList", (collection) => {
const tagsSet = new Set();
collection.getAll().forEach((item) => {
if (!item.data.tags) return;
item.data.tags
.filter((tag) => !["posts", "all", "blogPost"].includes(tag))
.forEach((tag) => {
tagsSet.add(tag);
});
});
return Array.from(tagsSet).sort();
});
eleventyConfig.addFilter("similarPosts", similarPosts);
eleventyConfig.addShortcode("excerpt", extractExcerpt);
eleventyConfig.addShortcode("image_url", imageUrl.shortcode);
eleventyConfig.addShortcode("tracking_script", trackingScript);
return {
dir: {
input: "src/site",
includes: "_includes",
output: "dist",
},
};
}