-
Notifications
You must be signed in to change notification settings - Fork 0
/
.eleventy.js
73 lines (66 loc) · 2.47 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
// const eleventySass = require("eleventy-sass");
const PostCSSPlugin = require("eleventy-plugin-postcss");
const pluginWebc = require("@11ty/eleventy-plugin-webc");
const htmlminifier = require("html-minifier-terser");
const IS_PROD_BUILD = process.env.NODE_ENV === "production";
module.exports = function (eleventyConfig) {
eleventyConfig.addPassthroughCopy("src/static");
eleventyConfig.addPlugin(PostCSSPlugin);
eleventyConfig.addPlugin(pluginWebc, {
/**
* Global no-import Components configuration - any webc components in here can be used in any template without needing to import.
* @see https://www.11ty.dev/docs/languages/webc/#global-no-import-components
*/
components: "src/_components/**/*.webc",
});
eleventyConfig.addTransform("htmlminifier", (content, outputPath) => {
if (!outputPath.endsWith(".html")) return content;
return htmlminifier.minify(
content,
IS_PROD_BUILD
? {
useShortDoctype: true,
collapseWhitespace: true,
removeComments: true,
removeEmptyElements: true,
removeRedundantAttributes: true,
}
: {
useShortDoctype: true,
collapseWhitespace: true,
maxLineLength: 120,
preserveLineBreaks: true,
removeEmptyElements: true,
removeRedundantAttributes: true,
},
);
});
eleventyConfig.addGlobalData("currentYear", new Date().getFullYear());
eleventyConfig.addGlobalData("author", "Your name here");
eleventyConfig.addGlobalData("title", "Your site title here");
/**
* No-code icons, using Iconify api
* @docs https://iconify.design/docs/usage/css/no-code/
* @docs https://icon-sets.iconify.design/?keyword=ion
*
* 1. default theme is "ion", change it to any other theme at icon-sets.iconify.design
* 2. explictly list the icons you want to use. this helps save bandwidth and forces you to be intentional about which icons are loaded
* 3. use with `tree-icon` webc component
*
* @example <tree-icon name="logo-youtube"></tree-icon
* @see src/_components/tree-icon.webc
*/
eleventyConfig.addGlobalData("icon", {
theme: "ion",
list: ["logo-youtube", "logo-twitter", "logo-instagram"],
get url() {
const iconListParam = encodeURIComponent(this.list.join(","));
return `https://api.iconify.design/${this.theme}.css?icons=${iconListParam}`;
},
});
return {
dir: {
input: "src",
},
};
};