-
Notifications
You must be signed in to change notification settings - Fork 1
/
eleventy.config.cjs
108 lines (94 loc) · 3.53 KB
/
eleventy.config.cjs
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
const directoryOutputPlugin = require('@11ty/eleventy-plugin-directory-output');
const pluginRss = require('@11ty/eleventy-plugin-rss');
const syntaxHighlight = require('@11ty/eleventy-plugin-syntaxhighlight');
const {countKeywords} = require('./config/blog.js');
const {downloadImage} = require('./config/download-image.js');
const {esbuildFilter, esbuildBuild} = require('./config/esbuild.js');
const {number} = require('./config/i18n.js');
const {markdown} = require('./config/markdown.js');
const {minifyHtml} = require('./config/minify-html');
const {indexContent} = require('./config/pagefind.js');
const {postcssFilter, postcssBuild} = require('./config/postcss.js');
const {
trim,
dateString,
timeString,
slugify,
jsonParse,
jsonStringify,
simpleDate,
normalizeKeyword,
getHostname,
} = require('./config/util.js');
const {generateServiceWorker} = require('./config/workbox.js');
const {alwatrIcon} = require('./shortcode/alwatr-icon.js');
const {editOnGitHub} = require('./shortcode/edit-on-github.js');
const {image} = require('./shortcode/image.js');
const directoryOutputPluginConfig = {
columns: {
filesize: true,
benchmark: true,
},
warningFileSize: 400 * 1000,
};
/**
* 11ty configuration.
* @param {import("@11ty/eleventy").UserConfig} eleventyConfig
* @returns {ReturnType<import("@11ty/eleventy/src/defaultConfig")>}
*/
module.exports = function (eleventyConfig) {
eleventyConfig.addPassthroughCopy({
assets: '/',
'assets/img/meta/favicon.ico': '/favicon.ico',
});
eleventyConfig.setQuietMode(true);
eleventyConfig.on('eleventy.before', esbuildBuild);
eleventyConfig.setLibrary('md', markdown);
eleventyConfig.addPlugin(syntaxHighlight);
eleventyConfig.addPlugin(pluginRss);
eleventyConfig.addPlugin(directoryOutputPlugin, directoryOutputPluginConfig);
eleventyConfig.addFilter('trim', trim);
eleventyConfig.addFilter('number', number);
eleventyConfig.addFilter('slugify', slugify);
eleventyConfig.addFilter('jsonParse', jsonParse);
eleventyConfig.addFilter('countKeywords', countKeywords);
eleventyConfig.addFilter('jsonStringify', jsonStringify);
eleventyConfig.addFilter('simpleDate', simpleDate);
eleventyConfig.addFilter('getHostname', getHostname);
eleventyConfig.addFilter('normalizeKeyword', normalizeKeyword);
eleventyConfig.addAsyncFilter('downloadImage', downloadImage);
eleventyConfig.addAsyncFilter('postcss', postcssFilter);
eleventyConfig.addAsyncFilter('esbuild', esbuildFilter);
eleventyConfig.addFilter('dateString', dateString);
eleventyConfig.addFilter('timeString', timeString);
eleventyConfig.addShortcode('image', image);
eleventyConfig.addShortcode('editOnGitHub', editOnGitHub);
eleventyConfig.addAsyncShortcode('alwatrIcon', alwatrIcon);
eleventyConfig.addTransform('minifyHtml', minifyHtml);
eleventyConfig.addTransform('trim', trim);
eleventyConfig.on('eleventy.after', postcssBuild);
eleventyConfig.on('eleventy.after', indexContent);
eleventyConfig.on('eleventy.after', generateServiceWorker);
eleventyConfig.setServerOptions({
liveReload: true,
port: 8080,
showAllHosts: true,
/**
* Whether DOM diffing updates are applied where possible instead of page reloads
*/
domDiff: false,
});
eleventyConfig.addWatchTarget('./site/');
eleventyConfig.addWatchTarget('./shortcode/');
return {
htmlTemplateEngine: 'njk',
templateFormats: ['njk', '11ty.js', 'md'],
dir: {
input: 'site',
output: 'dist',
includes: '_includes',
data: '_data',
layouts: '_layouts',
},
};
};