aboutsummaryrefslogtreecommitdiffstats
path: root/.eleventy.js
blob: ef7dab5947cf5ed63b5c12503c710a38cdfa0378 (plain) (blame)
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
const eleventy = require("@11ty/eleventy");
const eleventysyntaxhighlight = require("@11ty/eleventy-plugin-syntaxhighlight");
const eleventyrss = require("@11ty/eleventy-plugin-rss");

const markdown = require("markdown-it");
const markdownattrs = require("markdown-it-attrs");
const markdownanchor = require("markdown-it-anchor");
const markdownfootnote = require("markdown-it-footnote");

const slugify = require("@sindresorhus/slugify");

module.exports = eleventyConfig => {

    [
        eleventy.EleventyRenderPlugin,
//        eleventysyntaxhighlight,
        eleventyrss

    ].forEach(element => eleventyConfig.addPlugin(element));


    eleventyConfig.addPassthroughCopy([
        "assets/",
        "_headers",
        "_redirects",
        "favicon/",
        {
            "assets/sw.js": "/sw.js"
        },
        {
            "favicon/icon.ico": "/favicon.ico"
        },
        {
            [require.resolve("prismjs/themes/prism-twilight.min.css")]: "/vendor/prism.css"
        }
    ].forEach(element => eleventyConfig.addPassthroughCopy(element)));

    eleventyConfig.setLibrary("md", markdown({
            html: true,
            linkify: true,
            typographer: true
        }).use(markdownattrs)
        .use(markdownanchor, {
            permalink: markdownanchor.permalink.headerLink(),
            slugify: slug => slugify(slug)
        }).use(markdownfootnote));

    eleventyConfig.addFilter("getNewestCollectionItemDate", eleventyrss.getNewestCollectionItemDate);
    eleventyConfig.addJavaScriptFunction("convertHtmlToAbsoluteUrls", eleventyrss.convertHtmlToAbsoluteUrls);

    eleventyConfig.setBrowserSyncConfig({
        snippet: false,
    });

    return {
        dir: {
            input: "src",
            output: "dist",
            includes: "includes",
            data: "data",
            layouts: "layouts"
        },

        dataTemplateEngine: "njk",
        markdownTemplateEngine: "njk",
        htmlTemplateEngine: "njk",
        templateFormats: [
            "html",
            "md",
            "njk",
            "11ty.js"
        ]
    };
};