-
Notifications
You must be signed in to change notification settings - Fork 3
/
.eleventy.js
100 lines (85 loc) · 3.1 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
module.exports = function(eleventyConfig) {
// File extensions to passthrough copy
eleventyConfig.setTemplateFormats([
"pug",
"md",
"png",
"jpg",
"svg",
"ico",
"webmanifest",
"xml",
"txt"
]);
eleventyConfig.addPassthroughCopy("src/scripts");
eleventyConfig.addPassthroughCopy("src/CNAME");
eleventyConfig.addPassthroughCopy("src/break/styles.css");
// Custom markdown processor
let markdownIt = require("markdown-it");
let options = {
html: true,
linkify: true,
typographer: true,
breaks: true
};
let markdownLib = markdownIt(options);
eleventyConfig.setLibrary("md", markdownLib);
// Pug specific options
eleventyConfig.setPugOptions({
debug: false,
pretty: " "
});
// Template aliases
eleventyConfig.addLayoutAlias('base', 'layouts/base.pug');
eleventyConfig.addLayoutAlias('post', 'layouts/post.pug');
eleventyConfig.addLayoutAlias('project', 'layouts/project.pug');
// Sort all pages for sitemap
eleventyConfig.addCollection("sitemap", function(collectionApi) {
return collectionApi.getAll().sort((a, b) => {
if (a.url < b.url) {
return -1;
} else if (a.url > b.url) {
return 1;
} else {
return 0;
}
});
});
// Reverse sort posts, only show this and last year's posts
eleventyConfig.addCollection("recentPosts", function(collectionApi) {
return collectionApi.getFilteredByTag("post").reverse().filter(post => {
const lastYear = (new Date()).getFullYear() - 1;
return post.data.date.getFullYear() >= lastYear;
});
});
// Reverse sort posts
eleventyConfig.addCollection("post", function(collectionApi) {
return collectionApi.getFilteredByTag("post").reverse();
});
// Reverse sort featured posts
eleventyConfig.addCollection("featured", function(collectionApi) {
return collectionApi.getFilteredByTag("featured").reverse();
});
// Omit archived projects, sort remaining in reverse order
eleventyConfig.addCollection("project", function(collectionApi) {
return collectionApi.getFilteredByTag("project").reverse().filter(post => {
return !post.data.tags.includes("archive");
});
});
// For "featured portfolio" projects, allow manual positioning
eleventyConfig.addCollection("portfolio", function(collectionApi) {
return collectionApi.getFilteredByTag("portfolio").sort((a, b) => {
return a.data.position - b.data.position;
});
});
// TODO: Include speedlify score somewhere, maybe on the design system page
// https://github.com/zachleat/speedlify-score
//
/* TODO: available hack for using pug filters
see https://github.com/11ty/eleventy/issues/1523
global.filters = eleventyConfig.javascriptFunctions; // magic happens here
eleventyConfig.setPugOptions({ // and here
globals: ['filters']
});
*/
};