How to Use the Gatsby-image Component with Drupal and GraphQL

When transitioning from gatsby-source-drupal, powered by JSON:API, to gatsby-source-graphql, leveraging the capabilities of the GraphQL module, you may notice the immediate absence of automatic media-image field processing. This missing feature can be quite a setback for seamless image integration.
In this blog post, we'll unveil a clever technique using the createResolvers API that allows you to effortlessly fetch and display images from Drupal in your Gatsby project.
Customizing the GraphQL Schema
To complete this task, you must add the following code to your gatsby-node.js file.
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
const { createRemoteFileNode } = require(`gatsby-source-filesystem`)
exports.createResolvers = ({
actions,
getCache,
createNodeId,
createResolvers,
}) => {
const { createNode } = actions
createResolvers({
Drupal_MediaImage: {
gatsbyImageFile: {
type: `File`,
resolve(source) {
return createRemoteFileNode({
url: source.fieldMediaImage.url,
getCache,
createNode,
createNodeId,
})
},
},
},
})
}
Adding that code creates a new gatsbyImageFile field on the Drupal_MediaImage type, generating File nodes from every value on the source.fieldMediaImage.url field.
Adding a GraphQL Fragment to Query the Image
Since File nodes automatically have childImageSharp convenience fields available, you can then feed the images from Drupal into gatsby-image by simply querying:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
export const MediaImage = graphql`
fragment MediaImage on Drupal_MediaImage {
fieldMediaImage {
url
alt
}
gatsbyImageFile {
childImageSharp {
fluid {
originalName
...GatsbyImageSharpFluid
}
}
}
}
Wrapping Up
Efficiently integrating images from Drupal into your Gatsby project should be a breeze without the need for repetitive code snippets. By harnessing the gatsby-source-drupal-graphql plugin, a valuable extension of gatsby-source-graphql, you gain a powerful ally in connecting to Drupal and quickly consuming data. With enhanced developer experience (DX) and seamless decoupled implementation, this plugin streamlines your image-handling process, saving you valuable time and effort. As a result, elevate your Gatsby and Drupal workflow to new heights, ensuring stunning visuals that captivate your audience, and embrace the power of gatsby-source-drupal-graphql!

About the author

Demystifying Drupal Decoupled: How Easy Installation Has Become a Reality
By Flavio Juárez, June 23, 2025Installing Drupal in a decoupled architecture used to be intimidating. Today, it’s faster and easier than ever, with tools like Recipes, Project Browser, and even one-click deployment options. Here’s how modern Drupal is simplifying decoupled setups.

Beyond the Official Narrative: Building Drupal's (Alternative) Future
By Jesus Manuel Olivas, June 3, 2025An honest look at the current state of Drupal in 2025: what we saw at DrupalCon Atlanta earlier this year, what’s missing from the official narrative, and why we believe a flexible, API-first approach can truly serve enterprise organizations today.
Take your project to the next level!
Let us bring innovation and success to your project with the latest technologies.