-
Notifications
You must be signed in to change notification settings - Fork 0
/
.eleventy.js
96 lines (83 loc) Β· 2.96 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
import fs from 'node:fs';
import yaml from 'js-yaml';
import NavigationPlugin from '@11ty/eleventy-navigation';
import EleventyVitePlugin from '@11ty/eleventy-plugin-vite';
import EleventyPluginOgImage from 'eleventy-plugin-og-image';
import EleventyPluginRss from '@11ty/eleventy-plugin-rss';
import markdownItAnchor from 'markdown-it-anchor';
import PluginShikiTwoslash from './plugins/shiki-twoslash.js';
import PluginDrafts from './plugins/drafts.js';
import * as filters from './utils/filters.js';
import * as shortcodes from './utils/shortcodes.js';
import * as transforms from './utils/transforms.js';
import { OgImage } from './utils/OgImage.js';
import viteConfig from './vite.config.js';
export default function (eleventyConfig) {
eleventyConfig.addPassthroughCopy('src/assets');
eleventyConfig.addPassthroughCopy('src/**/*.js');
eleventyConfig.addPlugin(EleventyVitePlugin, {
viteOptions: viteConfig,
});
eleventyConfig.addPlugin(NavigationPlugin);
eleventyConfig.addDataExtension('yml', (contents) => yaml.load(contents));
Object.keys(filters).forEach((key) => {
eleventyConfig.addFilter(key, filters[key]);
});
Object.keys(transforms).forEach((key) => {
eleventyConfig.addTransform(key, transforms[key]);
});
eleventyConfig.setNunjucksEnvironmentOptions({
lstripBlocks: true,
trimBlocks: true,
});
eleventyConfig.addNunjucksAsyncShortcode('inlineImage', shortcodes.inlineImageShortcode);
eleventyConfig.addNunjucksAsyncShortcode('image', shortcodes.imageShortcode);
/** @type { import('eleventy-plugin-og-image').EleventyPluginOgImageOptions } */
const eleventyPluginOgImageOptions = {
outputDir: 'public/og-images',
urlPath: 'og-images',
satoriOptions: {
fonts: [
{
name: 'Gilroy',
data: fs.readFileSync('src/assets/fonts/gilroy/gilroy-extrabold-webfont.woff'),
weight: 900,
style: 'normal',
},
{
name: 'Silka',
data: fs.readFileSync('src/assets/fonts/silka/silka-regular-webfont.woff'),
weight: 400,
style: 'normal',
},
],
},
OgImage,
};
eleventyConfig.addPlugin(EleventyPluginOgImage, eleventyPluginOgImageOptions);
eleventyConfig.addPlugin(NavigationPlugin);
eleventyConfig.addPlugin(EleventyPluginRss);
eleventyConfig.addPlugin(PluginShikiTwoslash, {
themes: ['../../../src/assets/shiki/OneDark-Pro'],
theme: 'One Dark Pro',
});
eleventyConfig.addPlugin(PluginDrafts);
eleventyConfig.amendLibrary('md', (mdLib) => {
mdLib.use(markdownItAnchor, {
// permalink: markdownItAnchor.permalink.ariaHidden({
// placement: "after",
// class: "header-anchor",
// symbol: "#",
// ariaHidden: false,
// }),
// level: [1,2,3,4],
slugify: eleventyConfig.getFilter('slugify'),
});
});
return {
dir: { input: 'src' },
templateFormats: ['njk', 'md'],
markdownTemplateEngine: 'njk',
htmlTemplateEngine: 'njk',
};
}