generated from jeremydaly/eleventy-tailwind-template
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.eleventy.js
111 lines (93 loc) · 2.94 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
const dayjs = require("dayjs");
const autoprefixer = require("autoprefixer");
const markdownIt = require("markdown-it");
const postcss = require("postcss");
const tailwindcss = require("tailwindcss");
const searchFilter = require("./src/assets/js/searchFilter");
module.exports = function (eleventyConfig) {
const markdownItOptions = {
html: true,
linkify: true,
typographer: true,
};
const md = markdownIt(markdownItOptions)
.use(require("markdown-it-anchor"))
.use(require("markdown-it-attrs"))
.use(require("markdown-it-footnote"))
.use(require("markdown-it-table-of-contents"))
.use(function (md) {
// Recognize Mediawiki links ([[text]])
md.linkify.add("[[", {
validate: /^\s?([^\[\]\|\n\r]+)(\|[^\[\]\|\n\r]+)?\s?\]\]/,
normalize: (match) => {
const parts = match.raw.slice(2, -2).split("|");
parts[0] = parts[0].replace(/.(md|markdown)\s?$/i, "");
match.text = (parts[1] || parts[0]).trim();
match.url = `/notes/${parts[0].trim()}/`;
},
});
});
// SASS / SCSS
const eleventySass = require("eleventy-sass");
module.exports = function (eleventyConfig) {
eleventyConfig.addPlugin(eleventySass);
return {
dir: {
input: "src",
output: "_site",
},
};
};
// Search w/ Elasticlunr-js
eleventyConfig.addFilter("search", searchFilter);
// Syntax Highlighting
const syntaxHighlight = require("@11ty/eleventy-plugin-syntaxhighlight");
eleventyConfig.addPlugin(syntaxHighlight);
eleventyConfig.addFilter("markdownify", (string) => {
return md.render(string);
});
eleventyConfig.setLibrary("md", md);
// Watch targets
eleventyConfig.addWatchTarget("src/assets/css/*.css");
eleventyConfig.addWatchTarget("src/assets/js/*.js");
// Collections
eleventyConfig.addCollection("notes", function (collection) {
return collection.getFilteredByGlob(["src/notes/**/*.md", "index.md"]);
});
// Shortcodes
eleventyConfig.addShortcode("currentDate", (date = DateTime.now()) => {
return date;
});
// Folder / File Passthrough
eleventyConfig.addPassthroughCopy({
// "src/robots.txt": "/robots.txt",
"src/assets": "/assets",
"src/images": "src/images",
});
// Add Date filters
eleventyConfig.addFilter("date", (dateObj) => {
return dayjs(dateObj).format("MMMM D, YYYY");
});
eleventyConfig.addFilter("sitemapDate", (dateObj) => {
return dayjs(dateObj).toISOString();
});
eleventyConfig.addFilter("year", () => {
return dayjs().format("YYYY");
});
// Add pages collection
eleventyConfig.addCollection("pages", function (collections) {
return collections.getFilteredByTag("page").sort(function (a, b) {
return a.data.order - b.data.order;
});
});
return {
dir: {
input: "src",
output: "_site",
layouts: "_layouts",
includes: "_includes",
data: "_data",
},
passthroughFileCopy: true,
};
};