/
eleventy.config.js
44 lines (36 loc) · 1.2 KB
/
eleventy.config.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
import 'dotenv/config';
import lightningCSSPlugin from '@11tyrocks/eleventy-plugin-lightningcss';
import RSSPlugin from '@11ty/eleventy-plugin-rss';
import markdownIt from 'markdown-it';
import mdAnchor from 'markdown-it-anchor';
import dateFilter from './src/_filters/date.js';
import starFilter from './src/_filters/stars.js';
import responsiveImage from './src/_shortcodes/image.js';
const config = (eleventy) => {
// Eleventy plugins
eleventy.addPlugin(lightningCSSPlugin);
eleventy.addPlugin(RSSPlugin);
// Custom filters
eleventy.addFilter('formatDate', dateFilter);
eleventy.addFilter('starRating', starFilter);
// Custom shortcodes
eleventy.addAsyncShortcode('image', responsiveImage);
// Markdown config
const mdOptions = { html: true, typographer: true };
const md = markdownIt(mdOptions).use(mdAnchor);
eleventy.setLibrary('md', md);
eleventy.addPairedShortcode('sidenote', (content, number) => {
const result = md.render(content);
return `<aside id="sn-${number}" class="sidenote">
<small>${result}</small>
</aside>`;
});
// Options
return {
dir: {
input: 'src',
},
markdownTemplateEngine: 'njk',
};
};
export default config;