-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.eleventy.js
105 lines (94 loc) · 2.75 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
// @ts-nocheck
const fs = require('fs')
const eleventyPluginTimeToReadOptions = {
speed: '1000 characters per minute',
language: 'en',
style: 'long',
type: 'unit',
hours: 'auto',
minutes: true,
seconds: false,
digits: 1,
output: function (data) {
const emoji =
[null, '🐜', '🐤', '🐇', null, null, '🐘'][data.minutes] || '🐘'
return `${emoji} ${data.minutes} ${data.speed.interval} reading`
},
}
const eleventyPluginDirectoryOutput = {
columns: {
filesize: true,
benchmark: true,
},
warningFileSize: 400 * 1000,
}
module.exports = conf => {
conf.addPassthroughCopy({ './src/assets': '/assets' })
conf.addWatchTarget('./src/assets/')
conf.addWatchTarget('./src/utils/')
conf.addWatchTarget('./tailwind.config.js')
conf.addWatchTarget('./config.js')
conf.addPlugin(require('@11ty/eleventy-plugin-syntaxhighlight'))
conf.addPlugin(require('@11ty/eleventy-navigation'))
conf.addPlugin(require('@11ty/eleventy-plugin-rss'))
conf.addPlugin(
require('@11ty/eleventy-plugin-directory-output'),
eleventyPluginDirectoryOutput
)
conf.addPlugin(require('eleventy-google-fonts'))
conf.addPlugin(
require('eleventy-plugin-time-to-read'),
eleventyPluginTimeToReadOptions
)
conf.addPlugin(require('eleventy-plugin-embed-everything'))
conf.addPlugin(require('./config/plugins/blog'))
conf.addPlugin(require('./config/plugins/buttons'))
conf.addPlugin(require('./config/plugins/filters'))
conf.addPlugin(require('./config/plugins/lazy-image'))
conf.addPlugin(require('./config/plugins/cards'))
conf.addPlugin(require('./config/plugins/anchors'))
conf.addPlugin(require('./config/plugins/external-links'))
conf.addPlugin(require('./config/plugins/footers'))
conf.addShortcode('version', now)
prod(() => {
conf.addTransform(
'htmlmin',
require('./config/transformers/html-minifier.js')
)
})
/** SERVER */
conf.setBrowserSyncConfig({
files: './public/**/*.css',
callbacks: {
ready: function (err, browserSync) {
const content_404 = fs.readFileSync('public/404/index.html')
browserSync.addMiddleware('*', (req, res) => {
res.writeHead(404, { 'Content-type': 'text/html; charset=UTF-8' })
res.write(content_404)
res.end()
})
},
},
ui: false,
ghostMode: false,
})
return {
templateFormats: ['md', 'njk', 'html', 'liquid'],
markdownTemplateEngine: 'njk',
dataTemplateEngine: 'njk',
htmlTemplateEngine: 'njk',
// pathPrefix: "/",
dir: {
input: 'src',
includes: '_includes',
data: '_data',
output: 'public',
},
}
}
function prod(cb) {
if (process.env.ELEVENTY_ENV === 'production') cb()
}
function now() {
return String(new Date())
}