generated from yinkakun/eleventy-duo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patheleventy.config.js
114 lines (98 loc) · 3.07 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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import { IdAttributePlugin, InputPathToUrlTransformPlugin, HtmlBasePlugin } from "@11ty/eleventy";
import { EleventyRenderPlugin } from "@11ty/eleventy";
import { feedPlugin } from "@11ty/eleventy-plugin-rss";
import pluginWebc from "@11ty/eleventy-plugin-webc";
import pluginSyntaxHighlight from "@11ty/eleventy-plugin-syntaxhighlight";
import pluginNavigation from "@11ty/eleventy-navigation";
import { eleventyImageTransformPlugin } from "@11ty/eleventy-img";
import pluginFilters from "./_config/filters.js";
/** @param {import("@11ty/eleventy").UserConfig} eleventyConfig */
export default async function (eleventyConfig) {
eleventyConfig.addPreprocessor("drafts", "*", (data, content) => {
if (data.draft && process.env.ELEVENTY_RUN_MODE === "build") {
return false;
}
});
eleventyConfig
.addPassthroughCopy({
"./public/": "/"
})
.addPassthroughCopy("./content/feed/pretty-atom-feed.xsl");
eleventyConfig.addWatchTarget("content/**/*.{svg,webp,png,jpg,jpeg,gif}");
eleventyConfig.addWatchTarget("_includes/**/*.{svg,webp,png,jpg,jpeg,gif}");
eleventyConfig.addWatchTarget("public/**/*.{css}");
eleventyConfig.ignores.add("README.md");
eleventyConfig.addBundle("css", {
toFileDirectory: "dist",
});
eleventyConfig.addBundle("js", {
toFileDirectory: "dist",
});
eleventyConfig.addCollection("tips", async (collectionsApi) => {
return collectionsApi.getAll().filter((item) => /^\/tips\/.+/.test(item.url));
});
eleventyConfig.addPlugin(pluginSyntaxHighlight, {
preAttributes: { tabindex: 0 }
});
eleventyConfig.addPlugin(pluginNavigation);
eleventyConfig.addPlugin(HtmlBasePlugin);
eleventyConfig.addPlugin(InputPathToUrlTransformPlugin);
eleventyConfig.addPlugin(EleventyRenderPlugin);
eleventyConfig.addPlugin(pluginWebc, {
components: [
"./_components/**/*.webc",
"npm:@11ty/is-land/*.webc"
]
});
eleventyConfig.addPlugin(feedPlugin, {
type: "atom",
outputPath: "/feed/feed.xml",
stylesheet: "pretty-atom-feed.xsl",
templateData: {},
collection: {
name: "posts",
limit: 10,
},
metadata: {
language: "en",
title: "Crane",
subtitle: "A UI builder.",
base: "https://stonegate.me/",
author: {
name: "Stone"
}
}
});
eleventyConfig.addPlugin(eleventyImageTransformPlugin, {
formats: ["avif", "webp", "auto"],
failOnError: false,
htmlOptions: {
imgAttributes: {
loading: "lazy",
decoding: "async",
}
},
sharpOptions: {
animated: true,
},
});
eleventyConfig.addPlugin(pluginFilters);
eleventyConfig.addPlugin(IdAttributePlugin, {
// by default we use Eleventy’s built-in `slugify` filter:
// slugify: eleventyConfig.getFilter("slugify"),
// selector: "h1,h2,h3,h4,h5,h6", // default
});
eleventyConfig.addShortcode("currentBuildDate", () => {
return (new Date()).toISOString();
});
};
export const config = {
markdownTemplateEngine: "njk",
htmlTemplateEngine: "njk",
dir: {
input: "content", // default: "."
includes: "../_includes", // default: "_includes" (`input` relative)
data: "../_data", // default: "_data" (`input` relative)
output: "_site"
},
};