-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.eleventy.js
113 lines (93 loc) · 3.04 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
// Import custom data formats
const yaml = require("js-yaml");
// Import plugins
const syntaxHighlight = require("@11ty/eleventy-plugin-syntaxhighlight");
const pluginRss = require("@11ty/eleventy-plugin-rss");
// Import filters
const dateFilter = require('./src/filters/date-filter.js');
const w3DateFilter = require('./src/filters/w3-date-filter.js');
const markdownFilter = require('./src/filters/markdown-filter.js');
// Import shortcuts
const reviews = require('./src/shortcodes/reviews.js');
const codetitle = require('./src/shortcodes/codetitle.js');
module.exports = function(config) {
// Custom data formats
config.addDataExtension('yaml', contents => yaml.safeLoad(contents));
// Plugins
config.addPlugin(syntaxHighlight);
config.addPlugin(pluginRss);
// Filters
config.addFilter('dateFilter', dateFilter);
config.addFilter('w3DateFilter', w3DateFilter);
config.addFilter('markdownFilter', markdownFilter);
// Shortcodes
config.addShortcode("codetitle", codetitle);
config.addPairedShortcode("reviews", reviews);
// Collections
config.addCollection("posts", function(collection) {
return collection.getFilteredByGlob("src/posts/*.md");
});
config.addCollection("links", function(collection) {
return collection.getFilteredByGlob("src/links/*.md");
});
config.addCollection("noteTagList", function(collection) {
let noteTags = new Set();
collection.getAll().forEach(function(item) {
if(Array.isArray(item.data["noteTags"])) {
for(let noteTag of item.data["noteTags"]) {
noteTags.add(noteTag);
}
}
});
return Array.from(noteTags).sort();
});
config.addCollection("noteTagCollections", function(collection) {
let resultArrays = {};
collection.getAll().forEach(function(item) {
if(Array.isArray(item.data["noteTags"])) {
for(let noteTag of item.data["noteTags"]) {
if( !resultArrays[noteTag] ) {
resultArrays[noteTag] = [];
}
resultArrays[noteTag].push(item);
}
}
});
return resultArrays;
});
config.addCollection("linkTagList", function(collection) {
let linkTags = new Set();
collection.getAll().forEach(function(item) {
if(Array.isArray(item.data["linkTags"])) {
for(let linkTag of item.data["linkTags"]) {
linkTags.add(linkTag);
}
}
});
return Array.from(linkTags).sort();
});
config.addCollection("linkTagCollections", function(collection) {
let resultArrays = {};
collection.getAll().forEach(function(item) {
if(Array.isArray(item.data["linkTags"])) {
for(let linkTag of item.data["linkTags"]) {
if( !resultArrays[linkTag] ) {
resultArrays[linkTag] = [];
}
resultArrays[linkTag].push(item);
}
}
});
return resultArrays;
});
// Passthrough copy
config.addPassthroughCopy('src/images');
config.addPassthroughCopy('src/favicon.ico');
return {
dir: {
input: "src",
output: "dist"
},
passthroughFileCopy: true
}
};