Newer
Older
const { DateTime } = require("luxon");
const pluginRss = require("@11ty/eleventy-plugin-rss");
const pluginSyntaxHighlight = require("@11ty/eleventy-plugin-syntaxhighlight");
const pluginNavigation = require("@11ty/eleventy-navigation");
const pluginSEO = require('eleventy-plugin-seo');
const markdownIt = require("markdown-it");
const markdownItAnchor = require("markdown-it-anchor");
const lodash = require('lodash');
module.exports = function(eleventyConfig) {
let markdownLibrary = markdownIt({
html: true,
breaks: true,
linkify: true
}).use(markdownItAnchor, {
permalink: true,
permalinkClass: "direct-link",
permalinkSymbol: "#"
});
eleventyConfig.addPlugin(pluginRss);
eleventyConfig.addPlugin(pluginSyntaxHighlight);
eleventyConfig.addPlugin(pluginNavigation);
eleventyConfig.addPlugin(pluginSEO);
eleventyConfig.addShortcode('removeTrailingSlash', string => string.replace(/\/$/, ''));
eleventyConfig.setDataDeepMerge(true);
eleventyConfig.addLayoutAlias("base", "base.html");
eleventyConfig.addFilter("readableDate", dateObj => {
return DateTime.fromJSDate(dateObj, {zone: 'utc'}).toFormat("dd LLL yyyy");
});
eleventyConfig.addCollection('replace', (collectionAPI) =>
collectionAPI.getFilteredByGlob('./replace/*.md')
);
// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-date-string
eleventyConfig.addFilter('htmlDateString', (dateObj) => {
return DateTime.fromJSDate(dateObj, {zone: 'utc'}).toFormat('yyyy-LL-dd');
});
eleventyConfig.addPairedShortcode('infobox', content =>
`<div class="info-box">${markdownLibrary.render(content)}</div>`
);
eleventyConfig.addShortcode('get', function (object, path) {
return lodash.get(object, path);
});
eleventyConfig.addShortcode('env', function () {
return process.env.NODE_ENV || 'development';
});
eleventyConfig.addPairedShortcode('takeaway', content =>
`<div class="take-away">${content}</div>`
);
eleventyConfig.addPairedShortcode('centertext', content =>
`<div class="centered-text">${content}</div>`
);
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
// eleventyConfig.addShortcode('isDefined', function ())
// Get the first `n` elements of a collection.
eleventyConfig.addFilter("head", (array, n) => {
if( n < 0 ) {
return array.slice(n);
}
return array.slice(0, n);
});
// eleventyConfig.addCollection("tagList", require("./_11ty/getTagList"));
eleventyConfig.addPassthroughCopy("img");
eleventyConfig.addPassthroughCopy("styling");
eleventyConfig.addPassthroughCopy("assets");
/* Markdown Overrides */
eleventyConfig.setLibrary("md", markdownLibrary);
// Browsersync Overrides
eleventyConfig.setBrowserSyncConfig({
callbacks: {
ready: function(err, browserSync) {
// const content_404 = fs.readFileSync('_site/404.html');
// browserSync.addMiddleware("*", (req, res) => {
// // Provides the 404 content without redirect.
// res.write(content_404);
// res.end();
// });
},
},
ui: false,
ghostMode: false
});
return {
templateFormats: [
"md",
"html",
"liquid",
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
],
// If your site lives in a different subdirectory, change this.
// Leading or trailing slashes are all normalized away, so don’t worry about those.
// If you don’t have a subdirectory, use "" or "/" (they do the same thing)
// This is only used for link URLs (it does not affect your file structure)
// Best paired with the `url` filter: https://www.11ty.io/docs/filters/url/
// You can also pass this in on the command line using `--pathprefix`
// pathPrefix: "/",
markdownTemplateEngine: "liquid",
htmlTemplateEngine: "liquid",
dataTemplateEngine: "liquid",
// These are all optional, defaults are shown:
dir: {
input: "./",
includes: "_includes/",
layouts: "_includes/layouts/",
data: "_data",
output: "_site"
}
};
};