This repository has been archived by the owner on Apr 1, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy path.eleventy.js
70 lines (65 loc) · 2.02 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
const del = require("del");
const CleanCSS = require("clean-css");
const { minify } = require("terser");
const dirToClean = "build/*";
const markdownIt = require('markdown-it');
const markdownItAttrs = require('markdown-it-attrs');
const markdownItOptions = {
html: true,
breaks: true,
linkify: true
};
const markdownLib = markdownIt(markdownItOptions).use(markdownItAttrs);
const Image = require("@11ty/eleventy-img");
const glob = require("glob-promise");
module.exports = (config) => {
del(dirToClean);
config.setLibrary('md', markdownLib);
config.addNunjucksAsyncFilter("jsmin", async function (code, callback) {
try {
const minified = await minify(code);
callback(null, minified.code);
} catch (err) {
console.error("Terser error: ", err);
callback(null, code);
}
});
config.addFilter("sortByOrder", arr => {
arr.sort((a, b) => (a.data.order) > (b.data.order) ? 1 : -1);
return arr;
});
config.addFilter("cssmin", function (code) {
return new CleanCSS({}).minify(code).styles;
});
config.addPassthroughCopy("src/img");
config.addCollection('images', async collectionApi => {
let files = await glob('./build/img/gallery/*.{jpg,jpeg,png,gif}');
let images = files.filter(file => {
return file.indexOf('./build/img/gallery/thumb-') !== 0;
});
let collection = images.map(image => {
return {
path: image.replace('./build/img/gallery/', '/img/gallery/'),
thumbpath: image.replace('./build/img/gallery/', '/img/gallery/thumb-')
}
});
return collection;
});
config.addPassthroughCopy("src/fonts");
config.addPassthroughCopy("src/robots.txt");
config.addPassthroughCopy("src/security.txt");
config.addPassthroughCopy("src/favicon.ico");
config.addPassthroughCopy("src/browserconfig.xml");
config.addPassthroughCopy("src/manifest.json");
config.addWatchTarget("./src/sass/");
config.addWatchTarget("./src/css/");
config.addWatchTarget("./src/img/");
config.addWatchTarget("./src/fonts/");
config.addWatchTarget("./src/js/");
return {
dir: {
input: "src",
output: "build",
}
};
};