garden.canalswans.net/gatsby-node.js

104 lines
2.5 KiB
JavaScript
Executable File

const path = require(`path`)
exports.createPages = async ({ actions, graphql, reporter }) => {
const { createPage } = actions
// all markdown remark
const blogPostTemplate = path.resolve(`src/templates/blog-post.js`)
const result = await graphql(`
{
allMarkdownRemark(
sort: { order: DESC, fields: [frontmatter___date] }
limit: 1000
) {
edges {
node {
frontmatter {
path
}
}
}
}
}
`)
// Handle errors
if (result.errors) {
reporter.panicOnBuild(`Error while running GraphQL query.`)
return
}
// result.data.allMarkdownRemark.edges.forEach(({ node }) => {
// if (node.frontmatter.path) {
// console.log(`++ creating md page ${node.frontmatter.path}`)
// createPage({
// path: node.frontmatter.path,
// component: blogPostTemplate,
// context: {}, // additional data can be passed via context
// })
// } else {
// }
// })
// // all mdx
const mdxResult = await graphql(`
query {
allMdx {
edges {
node {
id
frontmatter {
path
}
}
}
}
}
`)
if (mdxResult.errors) {
reporter.panicOnBuild('🚨 ERROR: Loading "mdx createPages" query')
}
// Create blog post pages.
const mdxPosts = mdxResult.data.allMdx.edges
// you'll call `createPage` for each result
mdxPosts.forEach(({ node }, index) => {
if (node.frontmatter.path) {
console.log(`++ creating mdx page ${node.frontmatter.path} ${node.id}`)
createPage({
// This is the path
path: node.frontmatter.path,
// This component will wrap our MDX content
component: path.resolve(`./src/templates/mdx-post.js`),
// You can use the values in this context in
// our page layout component
context: { id: node.id },
})
} else {
console.log(`++ not creating: ${node.id}`)
}
})
}
exports.createSchemaCustomization = ({ actions }) => {
const { createTypes } = actions
const typeDefs = `
type MarkdownRemark implements Node {
frontmatter: Frontmatter
}
type Frontmatter {
tags: [String!]!,
draft: String,
description: String,
title: String,
image: String,
images: [String],
path: String,
gumroadPath: String,
type: String,
note: String,
author: String
}
`
createTypes(typeDefs)
}
exports.onCreateDevServer=({app})=>{
app.use(express.static('public'))
}