-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.eleventy.js
112 lines (91 loc) · 2.92 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
112
const { DateTime } = require("luxon")
const fs = require("fs")
const leeFilters = require('./_data/leeFilters.json')
const anchor = require("markdown-it-anchor")
module.exports = function(config) {
config.addPlugin(require("@11ty/eleventy-plugin-rss"))
config.addPlugin(require("@11ty/eleventy-plugin-syntaxhighlight"))
config.setDataDeepMerge(true)
config.addWatchTarget("sass/");
config.addLayoutAlias("base", "layouts/base.njk")
config.addLayoutAlias("post", "layouts/post.njk")
/* Shortcodes */
config.addShortcode('lee', filterId => {
if (leeFilters.hasOwnProperty(filterId)) {
return `${leeFilters[filterId].name} (<span class="swatch" style="background-color: ${leeFilters[filterId].hex}"></span> L${filterId})`
}
})
/* Filters */
config.addFilter("readableDate", dateObj => {
return DateTime.fromJSDate(dateObj, {zone: 'utc'}).toFormat("dd LLL yyyy")
})
// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-date-string
config.addFilter('htmlDateString', (dateObj) => {
return DateTime.fromJSDate(dateObj).toFormat('yyyy-LL-dd')
})
// Get the first `n` elements of a collection.
config.addFilter("head", (array, n) => {
if( n < 0 ) {
return array.slice(n)
}
return array.slice(0, n)
})
config.addPassthroughCopy("img")
config.addPassthroughCopy("css")
config.addPassthroughCopy("_redirects");
/* Markdown */
const markdownOptions = {
html: true,
linkify: false,
typographer: true
}
const markdown = require("markdown-it")(markdownOptions)
.use(anchor, {
permalink: anchor.permalink.headerLink({
class: 'direct-link'
}),
tabIndex: false
})
.use(require('markdown-it-attrs'))
.use(require('markdown-it-abbr'))
.use(require('markdown-it-footnote'))
.use(require('markdown-it-table-of-contents'))
config.setLibrary("md", markdown)
/* BrowserSync */
config.setBrowserSyncConfig({
ghostMode: false,
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()
})
}
}
})
return {
templateFormats: [
"md",
"njk",
"html",
"liquid"
],
// If your site lives in a different subdirectory, change this.
// Leading or trailing slashes are all normalized away, so don’t worry about it.
// If you don’t have a subdirectory, use "" or "/" (they do the same thing)
// This is only used for URLs (it does not affect your file structure)
pathPrefix: "/",
markdownTemplateEngine: "liquid",
htmlTemplateEngine: "njk",
dataTemplateEngine: "njk",
passthroughFileCopy: true,
dir: {
input: ".",
includes: "_includes",
data: "_data",
output: "_site"
}
}
}