Using onCreateNode to combine Drupal bundle schema types in GatsbyJS
Heads up! After using this, I have found myself needing to run `gatsby clean` before `develop` or `build` when using this approach.
Heads up! After using this, I have found myself needing to run `gatsby clean` before `develop` or `build` when using this approach.
Well. I had a great idea to use Gatsby's StaticQuery component for catalogs and product displays. I was hoping to also use the useStaticQuery hook for experimenting with shadowing. There is just one problem.
Even though Gatsby is a static site generator, it can be used to build dynamic applications. Gatsby is, after all, just a framework for building a React application. It just happens to be extremely opinionated and generates an artifact that is a static site. To me, "dynamic" means that an application maintains some form of state.
While fiddling with Gatsby, I wondered: what about fetching data from Drupal to push into the siteMetadata array? In the gatsby-config.js API file, you can specify metadata about the site.
I just discovered that there are some problems when working with the gatsby-source-drupal plugin. There is already a problem where empty data doesn't generate the schema type (even if it has no fields.) There is another one if you only receive one value.
As I continue working on a Drupal Commerce demo with GatsbyJS, I have moved on towards using GatsbyJS themes. GatsbyJS themes are composable, meaning you can use more than one within a single GatsbyJS application. However, it seems like you really piece together different themes to build out sections of your site.
I finally have my workspace set up, allowing me to begin serving content from one Drupal Commerce API server to three GatsbyJS apps.
Yesterday I made an attempt to use a single GatsbyJS instance to create multiple build outputs. That didn't work out so well. I also realized I was trying to fit a square peg through a round hole. Why fight how GatsbyJS works?
As I continue to fiddle with GatsbyJS, one thing I noticed is that you cannot specify the output directory of the GatsbyJS build. This was requested, implemented, and then reverted in GatsbyJS. In fact, it may never become a feature.
As I have begun working with GatsbyJS once again, I am trying to find a way to work with GatsbyJS and Drupal locally in a somewhat streamlined fashion. Honestly, serving Drupal over PHP's built-in server and using the gatsby develop and gatsby serve command work just fine. But, I love tooling.