-
Notifications
You must be signed in to change notification settings - Fork 0
/
.eleventy.js
144 lines (117 loc) · 4.21 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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
//const pluginSass = require('./src/_11ty/sass');
const readingTime = require('./src/_11ty/reading-time');
const pluginDate = require("eleventy-plugin-date");
const CaptureTag = require('./src/_11ty/nunjucks-capture');
let Nunjucks = require("nunjucks");
module.exports = function(eleventyConfig) {
let nunjucksEnvironment = new Nunjucks.Environment(
new Nunjucks.addExtension('CaptureTag', new CaptureTag())
);
eleventyConfig.setLibrary("njk", nunjucksEnvironment);
};
// var env = new nunjucks.Environment();
// env.addExtension('CaptureTag', new CaptureTag());
module.exports = function(eleventyConfig) {
// needed fot node-sass
eleventyConfig.setUseGitIgnore(false);
eleventyConfig.addPlugin(pluginDate, {
// Specify custom date formats
formats: {
// Change the readableDate filter to use abbreviated months.
readableDate: { year: "numeric", month: "short", day: "numeric" },
// Add a new filter to format a Date to just the month and year.
readableMonth: { year: "numeric", month: "long" },
// Add a new filter using formatting tokens.
readableYear: { year: "numeric" },
}
});
//LiquidFilter
eleventyConfig.addLiquidFilter('readingTime', readingTime);
//full-width massive, from https://github.com/eduardoboucas/buildtimes
eleventyConfig.addLiquidFilter("feature_title", title => {
const MIN_LENGTH = 10;
const MAX_LENGTH = 20;
if (!title) return "";
let currentLine = "";
let lines = [];
let words = title.split(" ");
words.forEach(word => {
if (currentLine.length + word.length <= MAX_LENGTH) {
currentLine += word + " ";
} else {
lines.push(currentLine);
currentLine = word + " ";
}
});
if (currentLine.length < MIN_LENGTH) {
lines[lines.length - 1] += currentLine;
} else {
lines.push(currentLine);
}
return `
<span class="feature-title__full">${title}</span>
${lines
.map(
line => `
<span aria-hidden="true" class="feature-title__part">${line.slice(
0,
-1
)}</span>
`
)
.join("")}
`;
});
//NunjucksFilter
eleventyConfig.addNunjucksFilter('readingTime', readingTime);
//tags as in 11ty base repo
eleventyConfig.addCollection('tagList', require('./src/_11ty/getTagList'));
// //TESTING: list of tags with count per tag - candy
// eleventyConfig.addCollection('tagCount', require('./src/_11ty/tagCounter'));
//
//TESTING: list of posts per tag - candy
eleventyConfig.addCollection('tagListPosts', require('./src/_11ty/tagListPosts'));
// //test to enable pagination and prev/next navigation
// // temporarily suspended
// eleventyConfig.addCollection('articles', function(collection) {
// return collection.getFilteredByGlob('src/articles/*.md').sort((a, b) => {
// return a.data.display_order - b.data.display_order;
// });
// });
// sass
// eleventyConfig.addPlugin(pluginSass, {
// watch: './src/scss/*.scss',
// outputDir: './src/_includes/css/'
// });
// pass some assets right through
eleventyConfig.addPassthroughCopy('./src/assets');
eleventyConfig.addPassthroughCopy('./src/robots.txt');
eleventyConfig.addPassthroughCopy('./src/android-chrome-144x144.png');
eleventyConfig.addPassthroughCopy('./src/android-chrome-192x192.png');
// Aliases are in relation to the _includes folder HTML
eleventyConfig.addLayoutAlias('base', 'layouts/base.html');
// Aliases are in relation to the _includes folder NUNJUCKS
eleventyConfig.addLayoutAlias('photographer', 'layouts/photographer.njk');
eleventyConfig.addLayoutAlias('text_author', 'layouts/text_author.njk');
eleventyConfig.addLayoutAlias('post', 'layouts/post.njk');
eleventyConfig.addLayoutAlias('index', 'layouts/index.njk');
eleventyConfig.setLiquidOptions({
dynamicPartials: false,
root: [
'_includes',
'.'
]
});
return {
dir: {
input: 'src',
includes: '_includes', //default
data: '_data', //default
output: '_site' //default
},
templateFormats : ['njk', 'md', 'liquid', 'html'],
markdownTemplateEngine: 'liquid',
htmlTemplateEngine : 'liquid',
passthroughFileCopy: true,
};
}