-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patheleventy.config.js
More file actions
71 lines (63 loc) · 2.12 KB
/
Copy patheleventy.config.js
File metadata and controls
71 lines (63 loc) · 2.12 KB
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
const dayjs = require("dayjs");
const yaml = require("js-yaml");
const ordinal = require("ordinal");
const commaNumber = require("comma-number");
const distFrom = require("distance-from");
const eleventyVitePlugin = require("@11ty/eleventy-plugin-vite");
const { ViteImageOptimizer } = require("vite-plugin-image-optimizer");
module.exports = function (eleventyConfig) {
/** Load Vite plugin */
eleventyConfig.addPlugin(eleventyVitePlugin, {
viteOptions: {
assetsInclude: ["**/*.manifest"],
publicDir: "src/public",
build: {
mode: "production",
sourcemap: false,
manifest: true,
rollupOptions: {
output: {
dir: "dist",
assetFileNames: "assets/[ext]/[name].[hash][extname]",
chunkFileNames: "assets/js/[name]-[hash].js",
entryFileNames: "assets/js/[name]-[hash].js",
},
},
},
plugins: [
ViteImageOptimizer({
jpg: {
quality: 50,
},
}),
],
},
});
/** Add loader for YAML files */
eleventyConfig.addDataExtension("yaml", (contents) => yaml.load(contents));
/** Add passthrough copy for static assets */
eleventyConfig.addPassthroughCopy({ "src/assets/images": "/img" });
eleventyConfig.addPassthroughCopy({ "src/assets/images/*.png": "/" });
eleventyConfig.addPassthroughCopy({ "src/assets/images/*.ico": "/" });
eleventyConfig.addPassthroughCopy({ "src/sass/": "/css" });
/** Add a filter to format inline dates for <time> tags */
eleventyConfig.addFilter("date", (date, format) =>
dayjs(date).format(format)
);
eleventyConfig.addFilter("ordinal", (num) => ordinal(num));
eleventyConfig.addFilter("commaNumber", (num) => commaNumber(num));
eleventyConfig.addShortcode("distance", (a, b, x, y) => {
let distance = new distFrom([a, b]).to([x, y]).in("mi");
return distance.toFixed(1);
});
/** Add a filter to format inline dates for <time> tags */
eleventyConfig.addFilter("ago", (year) =>
dayjs().diff(dayjs(year, "YYYY"), "year")
);
return {
dir: {
input: "src",
output: "dist",
},
};
};