-
Notifications
You must be signed in to change notification settings - Fork 1
/
.eleventy.js
124 lines (110 loc) · 3.12 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
const fs = require("fs");
const csv = require('@fast-csv/parse');
const plugins = require("./src/utils/plugins")
const filters = require("./src/utils/filters")
const shortcodes = require("./src/utils/shortcodes")
const collections = require("./src/utils/collections")
const pathsPassthrough = require("./src/utils/pathsPassthrough")
module.exports = function(eleventyConfig) {
/**
* Add plugins
*
* @link https://www.11ty.dev/docs/plugins/
*/
plugins.addPlugins(eleventyConfig)
/**
* Add filters
*
* @link https://www.11ty.io/docs/filters/
*/
Object.keys(filters).forEach((filterName) => {
eleventyConfig.addFilter(filterName, filters[filterName])
})
/**
* Add collections
*
* @link https://www.11ty.dev/docs/collections/
*/
Object.keys(collections).forEach((collectionName) => {
eleventyConfig.addCollection(collectionName, collections[collectionName])
})
/**
* Add shortcodes
*
* @link https://www.11ty.io/docs/shortcodes/
*/
Object.keys(shortcodes).forEach((shortcodeName) => {
eleventyConfig.addNunjucksAsyncShortcode("image", shortcodes[shortcodeName]);
eleventyConfig.addLiquidShortcode("image", shortcodes[shortcodeName]);
eleventyConfig.addJavaScriptFunction("image", shortcodes[shortcodeName]);
})
eleventyConfig.addDataExtension("csv", async (contents) => {
const rows = []
return await new Promise((resolve, reject) => {
csv.parseString(contents, { headers: true })
.on('error', error => {
reject(error)
})
.on('data', row => {
rows.push(row)
})
.on('end', () => {
resolve(rows)
});
})
});
/**
* Passthrough file copy
*
* @link https://www.11ty.io/docs/copy/
*/
pathsPassthrough.forEach(path => eleventyConfig.addPassthroughCopy(path));
/**
* Set custom markdown library instance
*
* @link https://www.11ty.dev/docs/languages/liquid/#optional-set-your-own-library-instance
*/
eleventyConfig.setLibrary("md", plugins.markdown());
/**
* Opts in to a full deep merge when combining the Data Cascade.
*
* @link https://www.11ty.dev/docs/data-deep-merge/#data-deep-merge
*/
eleventyConfig.setDataDeepMerge(true);
eleventyConfig.addWatchTarget('./src/assets/css/**/*.css');
/**
* Override BrowserSync Server options
*
* @link https://www.11ty.dev/docs/config/#override-browsersync-server-options
*/
eleventyConfig.setBrowserSyncConfig({
files: [
'css',
'js',
'mjs'
],
callbacks: {
ready: function(err, browserSync) {
const content_404 = fs.readFileSync('dist/404.html');
browserSync.addMiddleware("*", (req, res) => {
// Provides the 404 content without redirect.
res.write(content_404);
res.end();
});
}
}
});
eleventyConfig.setQuietMode(true);
// console.log(eleventyConfig);
return {
markdownTemplateEngine: "liquid",
htmlTemplateEngine: "njk",
dataTemplateEngine: "njk",
jsDataFileSuffix: ".data",
dir: {
input: "src",
layouts: "_layouts",
output: "dist"
}
};
};