-
-
Notifications
You must be signed in to change notification settings - Fork 59
/
Copy patheleventy.config.js
75 lines (66 loc) · 1.74 KB
/
eleventy.config.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
import htmlmin from 'html-minifier'
import markdownIt from 'markdown-it'
import { EleventyHtmlBasePlugin } from '@11ty/eleventy'
const isPages = process.env.ELEVENTY_ENV === 'pages'
const isProdDeployment = Boolean(
process.env.ELEVENTY_RUN_MODE
&& process.env.ELEVENTY_RUN_MODE === 'build'
)
const outDir = isPages ? 'docs' : 'public'
export default async function(config) {
config.addPlugin(EleventyHtmlBasePlugin)
// shortcode to render markdown from string => {{ STRING | markdown | safe }}
config.addFilter('markdown', function(value) {
let markdown = markdownIt({
html: true
})
return markdown.render(value)
})
// rebuild on CSS changes
config.addWatchTarget('./src/_includes/css/')
// Markdown
config.setLibrary(
'md',
markdownIt({
html: true,
breaks: true,
linkify: true,
typographer: true
})
)
//create collections
config.addCollection('sections', async (collection) => {
return collection.getFilteredByGlob('./src/sections/*.md')
})
// STATIC FILES
config.addPassthroughCopy({ './src/static/': '/' })
// TRANSFORM -- Minify HTML Output
if (isProdDeployment) {
config.addTransform('htmlmin', function(content, outputPath) {
if ( outputPath && outputPath.endsWith('.html') ) {
let minified = htmlmin.minify(content, {
useShortDoctype: true,
removeComments: true,
collapseWhitespace: true
})
return minified
}
return content
})
}
return {
dir: {
input: 'src',
output: outDir,
data: './_data',
includes: './_includes',
layouts: './_layouts'
},
templateFormats: [
'md',
'njk',
'11ty.js'
],
htmlTemplateEngine: 'njk'
}
}