forked from gatsbyjs/gatsby
-
Notifications
You must be signed in to change notification settings - Fork 0
/
on-create-page.js
34 lines (30 loc) · 923 Bytes
/
on-create-page.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
const path = require("path");
const fs = require("fs-extra");
const merge = require("lodash/merge");
const defaultOptions = require("../utils/default-options");
const extractExports = require("../utils/extract-exports");
const mdx = require("../utils/mdx");
module.exports = async ({ page, actions }, pluginOptions) => {
const { createPage, deletePage } = actions;
const { extensions, ...options } = defaultOptions(pluginOptions);
const ext = path.extname(page.component);
if (extensions.includes(ext)) {
const content = await fs.readFile(page.component, "utf8");
const code = await mdx(content, options);
// grab the exported frontmatter
const { frontmatter } = extractExports(code);
deletePage(page);
createPage(
merge(
{
context: {
frontmatter: {
...frontmatter
}
}
},
page
)
);
}
};