-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstatic.config.js
More file actions
66 lines (59 loc) · 1.32 KB
/
Copy pathstatic.config.js
File metadata and controls
66 lines (59 loc) · 1.32 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
import { rebuildRoutes } from "react-static/node";
import chokidar from "chokidar";
import debounce from "lodash.debounce";
import { md } from "./src/modules/blog";
if (process.env.REACT_STATIC_ENV === "development") {
const rebuild = debounce(rebuildRoutes, 1000, {
leading: true,
trailing: false
});
chokidar
.watch("./blog/**/*", { ignoreInitial: true })
.on("all", (_event, path) => {
console.info(`File changed: ${path}`);
rebuild();
});
}
const config = {
siteRoot: "https://kanoa.tech",
devServer: {
port: 8080,
host: "127.0.0.1"
},
paths: {
public: "public"
}
};
const getSiteData = async () => ({
title: "Kanoa's Blog"
});
const getRoutes = async ({ stage }) => {
const dev = stage === "dev";
const posts = await md(
"blog",
config.paths.public,
dev ? null : config.siteRoot
);
return [
{
path: "404",
template: "src/components/NotFound"
},
{ path: "/loading", template: "src/components/Loading" },
{
path: "/",
template: "src/components/Blog",
getData: () => ({ posts }),
children: posts.map(post => ({
path: `blog/${post.slug}`,
template: "src/components/BlogPost",
getData: () => ({ post })
}))
}
];
};
export default {
...config,
getSiteData,
getRoutes
};