-
Notifications
You must be signed in to change notification settings - Fork 0
/
.eleventy.js
109 lines (93 loc) · 3.75 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
require('dotenv').config();
const pluginRss = require('@11ty/eleventy-plugin-rss');
const pluginPageAssets = require('eleventy-plugin-page-assets');
const pluginNavigation = require('@11ty/eleventy-navigation');
const pluginSchema = require('@quasibit/eleventy-plugin-schema');
const markdown = require('./.eleventy_config/markdown');
const filters = require('./.eleventy_config/filters');
const asyncFilters = require('./.eleventy_config/filters.async');
const shortcodes = require('./.eleventy_config/shortcodes');
const collections = require('./.eleventy_config/collections');
const CONTENT_GLOBS = {
posts: 'src/posts/**/*.md|pages/**/*.md',
assets: '*.gpx|*.fit|*.pdf|*.csv|*.svg'
};
module.exports = function (eleventyConfig) {
const ELEVENTY_ENVIRONMENT = (typeof process.env.ELEVENTY_ENV !== 'undefined') ? process.env.ELEVENTY_ENV : 'production';
console.log('Building with', ELEVENTY_ENVIRONMENT, 'environment.');
console.log('');
eleventyConfig.setFrontMatterParsingOptions({
excerpt: true,
excerpt_alias: 'custom_excerpt'
});
eleventyConfig.setLiquidOptions({
dynamicPartials: false,
strictFilters: true
});
eleventyConfig.addPlugin(pluginRss, {
posthtmlRenderOptions: {
closingSingleTag: 'default' // opt-out of <img/>-style XHTML single tags
}
});
eleventyConfig.addPlugin(pluginNavigation);
eleventyConfig.addPlugin(pluginPageAssets, {
mode: 'directory',
postsMatching: CONTENT_GLOBS.posts,
assetsMatching: CONTENT_GLOBS.assets,
recursive: false,
hashAssets: false
});
eleventyConfig.addPlugin(pluginSchema);
// Filters
Object.keys(filters).forEach((filterName) => {
eleventyConfig.addFilter(filterName, filters[filterName])
});
// Async filters
Object.keys(asyncFilters).forEach((filterName) => {
eleventyConfig.addAsyncFilter(filterName, asyncFilters[filterName])
});
// Shortcodes
Object.keys(shortcodes).forEach((shortcodeName) => {
eleventyConfig.addShortcode(shortcodeName, shortcodes[shortcodeName])
});
// Collections
Object.keys(collections).forEach((collectionName) => {
eleventyConfig.addCollection(collectionName, collections[collectionName])
});
eleventyConfig.addPassthroughCopy('src/assets');
eleventyConfig.addPassthroughCopy('src/CNAME');
eleventyConfig.addPassthroughCopy('src/robots.txt');
eleventyConfig.addPassthroughCopy('src/key_gustav-lindqvist.asc');
eleventyConfig.addPassthroughCopy({'src/webfinger.json': '/.well-known/webfinger'});
eleventyConfig.addPassthroughCopy({'src/favicon': '/'});
eleventyConfig.addPassthroughCopy('src/_redirects');
eleventyConfig.addPassthroughCopy('src/_headers');
// Layouts
eleventyConfig.addLayoutAlias('base', 'base.njk');
eleventyConfig.addLayoutAlias('page', 'page.njk');
eleventyConfig.addLayoutAlias('post', 'post.njk');
eleventyConfig.addLayoutAlias('beer', 'beer.njk');
eleventyConfig.addLayoutAlias('brewery', 'brewery.njk');
eleventyConfig.setDataDeepMerge(true);
eleventyConfig.setLibrary('md', markdown);
return {
dir: {
input: 'src',
output: '_site'
},
// Control which files Eleventy will process
// e.g.: *.md, *.njk, *.html, *.liquid
templateFormats: [
'md',
'hbs',
'njk',
'html',
],
// Opt-out of pre-processing global data JSON files: (default: `liquid`)
dataTemplateEngine: false,
// Pre-process *.md files with: (default: `liquid`)
markdownTemplateEngine: 'njk',
// Pre-process *.html files with: (default: `liquid`)
htmlTemplateEngine: 'njk',
};
};