-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathgridsome.server.js
62 lines (55 loc) · 1.62 KB
/
gridsome.server.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
const fs = require("fs");
const path = require("path");
const pick = require("lodash.pick");
const { pathPrefix } = require("./gridsome.config");
const luxon = require("luxon");
var DateTime = luxon.DateTime;
let d = DateTime.local();
let today = d.toISODate();
module.exports = function(api, options) {
// api.createPages(({ createPage }) => {
// createPage({
// path: "/projects",
// component: "./src/templates/Projects.vue",
// context: {
// today: today,
// },
// });
// });
api.loadSource((store) => {
const cleanedPathPrefix = `${
pathPrefix
? ["", ...pathPrefix.split("/").filter((dir) => dir.length)].join("/")
: ""
}`;
store.addMetadata("pathPrefix", cleanedPathPrefix);
});
api.beforeBuild(({ config, store }) => {
const { collection } = store.getCollection("Post");
const posts = collection.data.map((post) => {
return pick(post, ["title", "path", "summary", "content"]);
});
const output = {
dir: "./static",
name: "search.json",
...options.output,
};
const outputPath = path.resolve(process.cwd(), output.dir);
const outputPathExists = fs.existsSync(outputPath);
const fileName = output.name.endsWith(".json")
? output.name
: `${output.name}.json`;
if (outputPathExists) {
fs.writeFileSync(
path.resolve(process.cwd(), output.dir, fileName),
JSON.stringify(posts)
);
} else {
fs.mkdirSync(outputPath);
fs.writeFileSync(
path.resolve(process.cwd(), output.dir, fileName),
JSON.stringify(posts)
);
}
});
};