-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmetalsmith.js
103 lines (101 loc) · 2.43 KB
/
metalsmith.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
const Metalsmith = require("metalsmith");
let ms = Metalsmith(__dirname);
const fsMetadata = require("metalsmith-fs-metadata");
const pathNoIndex = require("./lib/metalsmith-path-noindex");
const buildInfo = require("./lib/metalsmith-build-info");
const envInfo = require("./lib/metalsmith-env-info");
const collections = require("metalsmith-collections");
const frontmatterFileLoader = require("metalsmith-frontmatter-file-loader");
const frontmatterRenderer = require("metalsmith-frontmatter-renderer");
const inPlace = require("metalsmith-in-place");
const layouts = require("metalsmith-layouts");
const beautify = require("metalsmith-beautify");
const drafts = require("metalsmith-drafts");
const htmlMinifierOptimise = require("./lib/metalsmith-html-minifier-optimise");
const mapsiteCurrentenv = require("./lib/metalsmith-mapsite-currentenv");
const gravityPaths = require("@buildit/gravity-ui-web/build-api");
const fs = require("fs");
const nunjucksJsTransformerOptions = {
html: true,
root: "layouts",
};
ms.source("./pages")
.destination("./dist")
.clean(false)
.metadata({
gravitySvgContents: fs.readFileSync(
gravityPaths.distPath(gravityPaths.distSvgSymbolsFilename),
"utf8"
)
})
.use(
fsMetadata({
config: "./config/site.json"
})
)
.use(buildInfo())
.use(envInfo())
.use(collections())
.use(
inPlace({
suppressNoFilesError: true,
engineOptions: nunjucksJsTransformerOptions,
})
)
.use(pathNoIndex())
.use(
frontmatterFileLoader({
key: "blocks-md",
suppressNoFilesError: true
})
)
.use(
frontmatterRenderer({
key: "blocks-md",
out: "blocks",
suppressNoFilesError: true,
options: {
html: true
}
})
)
.use(
frontmatterFileLoader({
key: "blocks-njk",
suppressNoFilesError: true
})
)
.use(
frontmatterRenderer({
key: "blocks-njk",
out: "blocks",
ext: "njk",
suppressNoFilesError: true,
options: nunjucksJsTransformerOptions,
})
)
.use(layouts({
engineOptions: nunjucksJsTransformerOptions,
}))
.use(
beautify({
preserve_newlines: false
})
)
.use(drafts())
.use(
htmlMinifierOptimise({
minifierOptions: {
removeComments: false
}
})
)
.use(
mapsiteCurrentenv({
omitIndex: true
})
)
.build(function(err) {
if (err) throw err;
console.log("Metalsmith build complete!");
});