Advertisement
c4pslock

gatsby-node.js

Dec 15th, 2022
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.57 KB | None | 0 0
  1. // gatsby-node.js
  2.  
  3. const { reporter } = require('gatsby-cli/lib/reporter/reporter')
  4. const { createFilePath } = require('gatsby-source-filesystem')
  5. const path = require('path')
  6. const { node } = require('prop-types')
  7.  
  8. // new, based on Stack Overflow advice
  9. exports.onCreateNode = ({ node, getNode, actions }) => {
  10. const { createNodeField } = actions
  11. if (node.internal.type === `Mdx`) {
  12. const slug = createFilePath({ node, getNode, basePath: `pages` })
  13. createNodeField({
  14. node,
  15. name: `slug`,
  16. value: slug,
  17. })
  18. }
  19. }
  20.  
  21. exports.createPages = async ({ graphql, actions }) => {
  22. const { createPage } = actions
  23. const result1 = await graphql(`
  24. query {
  25. allMdx(
  26. filter: {frontmatter: {key: {eq: "3d-media"}}}) {
  27. nodes {
  28. frontmatter {
  29. slug
  30. category
  31. tags
  32. template
  33. }
  34. }
  35. }
  36. }
  37. `)
  38.  
  39. const result2 = await graphql(`
  40. query {
  41. allMdx(
  42. filter: {frontmatter: {key: {eq: "web-dnd"}}}) {
  43. nodes {
  44. frontmatter {
  45. slug
  46. category
  47. tags
  48. template
  49. }
  50. }
  51. }
  52. }
  53. `)
  54.  
  55. const result3 = await graphql(`
  56. query {
  57. allMdx(
  58. filter: {frontmatter: {key: {eq: "ui-ux"}}}) {
  59. nodes {
  60. frontmatter {
  61. slug
  62. category
  63. tags
  64. template
  65. }
  66. }
  67. }
  68. }
  69. `)
  70.  
  71. // V8.4. S.O. - Change filename 3d-media-details to 3d-media-template
  72. const mediaTemplate = require.resolve(`./src/templates/3d-media-details.js`)
  73. const webdndTemplate = require.resolve(`./src/templates/web-dnd-details.js`)
  74. const uiuxTemplate = require.resolve(`./src/templates/ui-ux-details.js`)
  75. // Handle errors
  76. if (result1.errors || result2.errors || result3.errors ) {
  77. reporter.panicOnBuild(`Error while running GraphQL query.`)
  78. return
  79. }
  80.  
  81. result1.data.allMdx.nodes.forEach( media => {
  82. createPage({
  83. path: '/projects/3d-media/' + media.frontmatter.slug,
  84. component: mediaTemplate,
  85. context: { slug: media.frontmatter.slug }
  86. })
  87. })
  88.  
  89. result2.data.allMdx.nodes.forEach( web => {
  90. createPage({
  91. path: '/projects/web-design-and-development/' + web.frontmatter.slug,
  92. component: webdndTemplate,
  93. context: { slug: web.frontmatter.slug }
  94. })
  95. })
  96.  
  97. result3.data.allMdx.nodes.forEach( uiux => {
  98. createPage({
  99. path: '/projects/ui-ux-design/' + uiux.frontmatter.slug,
  100. component: uiuxTemplate,
  101. context: { slug: uiux.frontmatter.slug }
  102. })
  103. })
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement