'use strict'; const path = require('path'); const _ = require('lodash'); const createCategoriesPages = require('./pagination/create-categories-pages.js'); const createTagsPages = require('./pagination/create-tags-pages.js'); const createPostsPages = require('./pagination/create-posts-pages.js'); const createPages = async ({ graphql, actions }) => { const { createPage } = actions; // 404 createPage({ path: '/404', component: path.resolve('./src/templates/not-found-template.js') }); // Tags list createPage({ path: '/tags', component: path.resolve('./src/templates/tags-list-template.js') }); // Categories list createPage({ path: '/categories', component: path.resolve('./src/templates/categories-list-template.js') }); // Posts and pages from markdown const result = await graphql(` { allMarkdownRemark( filter: { frontmatter: { draft: { ne: true } } } ) { edges { node { frontmatter { layout } fields { slug } } } } } `); const { edges } = result.data.allMarkdownRemark; _.each(edges, (edge) => { if (_.get(edge, 'node.frontmatter.layout') === 'page') { createPage({ path: edge.node.fields.slug, component: path.resolve('./src/templates/page-template.js'), context: { slug: edge.node.fields.slug } }); } else if (_.get(edge, 'node.frontmatter.layout') === 'post') { createPage({ path: edge.node.fields.slug, component: path.resolve('./src/templates/post-template.js'), context: { slug: edge.node.fields.slug } }); } }); // Feeds await createTagsPages(graphql, actions); await createCategoriesPages(graphql, actions); await createPostsPages(graphql, actions); }; module.exports = createPages;