This repository has been archived by the owner on Feb 1, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
.eleventy.js
122 lines (103 loc) · 4.33 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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/**
* I strive to keep the `.eleventy.js` file clean and uncluttered. Most adjustments must be made in:
* - `./config/collections/index.js`
* - `./config/filters/index.js`
* - `./config/plugins/index.js`
* - `./config/shortcodes/index.js`
* - `./config/transforms/index.js`
*/
// module import filters
const {
limit,
toHtml,
where,
toISOString,
formatDate,
toAbsoluteUrl,
stripHtml,
minifyCss,
mdInline,
excerpt,
wpToEleventy
} = require('./config/filters/index.js');
// module import shortcodes
const {imageShortcodePlaceholder, liteYoutube} = require('./config/shortcodes/index.js');
// module import collections
const {getAllPosts} = require('./config/collections/index.js');
// module import transforms
// plugins
const markdownLib = require('./config/plugins/markdown.js');
const {EleventyRenderPlugin} = require('@11ty/eleventy');
const syntaxHighlight = require('@11ty/eleventy-plugin-syntaxhighlight');
const {slugifyString} = require('./config/utils');
const {escape} = require('lodash');
const pluginRss = require('@11ty/eleventy-plugin-rss');
module.exports = eleventyConfig => {
// Tell 11ty to use the .eleventyignore and ignore our .gitignore file
eleventyConfig.setUseGitIgnore(false);
// --------------------- Custom Watch Targets -----------------------
eleventyConfig.addWatchTarget('./src/assets');
eleventyConfig.addWatchTarget('./utils/*.js');
// --------------------- layout aliases -----------------------
eleventyConfig.addLayoutAlias('base', 'base.njk');
eleventyConfig.addLayoutAlias('page', 'page.njk');
eleventyConfig.addLayoutAlias('home', 'home.njk');
eleventyConfig.addLayoutAlias('blog', 'blog.njk');
eleventyConfig.addLayoutAlias('post', 'post.njk');
// --------------------- Custom filters -----------------------
eleventyConfig.addFilter('limit', limit);
eleventyConfig.addFilter('where', where);
eleventyConfig.addFilter('escape', escape);
eleventyConfig.addFilter('toHtml', toHtml);
eleventyConfig.addFilter('toIsoString', toISOString);
eleventyConfig.addFilter('formatDate', formatDate);
eleventyConfig.addFilter('toAbsoluteUrl', toAbsoluteUrl);
eleventyConfig.addFilter('stripHtml', stripHtml);
eleventyConfig.addFilter('slugify', slugifyString);
eleventyConfig.addFilter('toJson', JSON.stringify);
eleventyConfig.addFilter('fromJson', JSON.parse);
eleventyConfig.addFilter('cssmin', minifyCss);
eleventyConfig.addFilter('md', mdInline);
eleventyConfig.addFilter('excerpt', excerpt);
eleventyConfig.addFilter('wpToEleventy', wpToEleventy);
eleventyConfig.addFilter('keys', Object.keys);
eleventyConfig.addFilter('values', Object.values);
eleventyConfig.addFilter('entries', Object.entries);
// --------------------- Custom shortcodes ---------------------
eleventyConfig.addNunjucksAsyncShortcode('imagePlaceholder', imageShortcodePlaceholder);
eleventyConfig.addShortcode('youtube', liteYoutube);
eleventyConfig.addShortcode('year', () => `${new Date().getFullYear()}`); // current year, stephanie eckles
// --------------------- Custom transforms ---------------------
eleventyConfig.addPlugin(require('./config/transforms/html-config.js'));
// --------------------- Custom Template Languages ---------------------
eleventyConfig.addPlugin(require('./config/template-languages/css-config.js'));
eleventyConfig.addPlugin(require('./config/template-languages/js-config.js'));
// --------------------- Custom collections -----------------------
eleventyConfig.addCollection('posts', getAllPosts);
// --------------------- Plugins ---------------------
eleventyConfig.addPlugin(EleventyRenderPlugin);
eleventyConfig.addPlugin(syntaxHighlight);
eleventyConfig.setLibrary('md', markdownLib);
eleventyConfig.addPlugin(pluginRss);
// --------------------- Passthrough File Copy -----------------------
// same path
['src/assets/fonts/', 'src/assets/images/'].forEach(path =>
eleventyConfig.addPassthroughCopy(path)
);
// social icons to root directory
eleventyConfig.addPassthroughCopy({
'src/assets/images/favicon/*': '/'
});
// --------------------- general config -----------------------
return {
dir: {
input: 'src',
output: 'dist',
includes: '_includes',
layouts: '_layouts'
},
markdownTemplateEngine: 'njk',
dataTemplateEngine: 'njk',
htmlTemplateEngine: 'njk'
};
};