aboutsummaryrefslogtreecommitdiff
path: root/.eleventy.js
blob: b9f82634bda8bbf3e6ebbc2536b6926811c8e0bd (plain)
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
const sass = require("sass");
const path = require("path");


module.exports = function(eleventyConfig) {

  eleventyConfig.addShortcode("icon", function(name) {
    return name
  });


  eleventyConfig.addLiquidFilter('group_by', () => {
  })

  eleventyConfig.addLiquidFilter('inspect', (i) => {
    console.log('i', i);
  })

  eleventyConfig.addTemplateFormats("scss");
  eleventyConfig.addExtension("scss", {
    outputFileExtension: 'css',
    compile: async function(inputContent) {
      let result = sass.compileString(inputContent);

      return async () => {
        return result.css;
      };
    }
  });

  eleventyConfig.addTemplateFormats("svg");
  eleventyConfig.addExtension("svg", {
    outputFileExtension: 'svg',
    compileOptions: {
      permalink: function(contents, inputPath) {
        const basename = path.basename(inputPath);
        return `icons/${basename}`;
      }
    },
    compile: async (inputContent, inputPath) => {

      return async () => {
        const basename = path.basename(inputPath, '.svg');

        return inputContent.replace('<svg>', `<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-${basename}" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">\n  <path stroke="none" d="M0 0h24v24H0z" fill="none"/>`);
      };
    }
  });

  eleventyConfig.addTemplateFormats("json");
  eleventyConfig.addExtension("json", {
    outputFileExtension: 'json',
    compile: async function(inputContent) {
      return async () => {
        return inputContent;
      };
    }
  });

  eleventyConfig.addCollection('icons', collection => {
    return collection.getFilteredByGlob('./src/icons/*.svg').sort((a, b) => {
      return b.name - a.name
    })
  })

  return {
    dynamicPartials: false,
    dir: {
      input: 'src',

      includes: '_includes',
      layouts: '_layouts',
      data: '_data'
    }
  }

}