Skip to content

Commit b2bb56f

Browse files
authored
feat: create node for local assets and webp asset support (#225)
* fix: create node field for assets (#224) * fix: use createNodeField for remote node * chore: update demo to use downloadLocalImages * fix: set File field link * feat: support webp for assets * chore: revert download local assets
1 parent 8c6dfa0 commit b2bb56f

File tree

1 file changed

+24
-6
lines changed

1 file changed

+24
-6
lines changed

gatsby-source-graphcms/src/gatsby-node.js

+24-6
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ export async function createSchemaCustomization(gatsbyApi, pluginOptions) {
281281
if (downloadLocalImages)
282282
createTypes(`
283283
type ${typePrefix}Asset {
284-
localFile: File @link
284+
localFile: File @link(from: "fields.localFile")
285285
}
286286
`)
287287

@@ -304,7 +304,13 @@ export async function createSchemaCustomization(gatsbyApi, pluginOptions) {
304304
}
305305

306306
export async function onCreateNode(
307-
{ node, actions: { createNode }, createNodeId, getCache, cache },
307+
{
308+
node,
309+
actions: { createNode, createNodeField },
310+
createNodeId,
311+
getCache,
312+
cache,
313+
},
308314
{
309315
buildMarkdownNodes = false,
310316
downloadLocalImages = false,
@@ -314,7 +320,9 @@ export async function onCreateNode(
314320
if (
315321
downloadLocalImages &&
316322
node.remoteTypeName === 'Asset' &&
317-
node.mimeType.includes('image/')
323+
['image/png', 'image/jpg', 'image/jpeg', 'image/tiff', 'image/webp'].includes(
324+
node.mimeType
325+
)
318326
) {
319327
try {
320328
const fileNode = await createRemoteFileNode({
@@ -327,7 +335,9 @@ export async function onCreateNode(
327335
...(node.fileName && { name: node.fileName }),
328336
})
329337

330-
if (fileNode) node.localFile = fileNode.id
338+
if (fileNode) {
339+
createNodeField({ node, name: 'localFile', value: fileNode.id })
340+
}
331341
} catch (e) {
332342
console.error(`[${PLUGIN_NAME}]`, e)
333343
}
@@ -388,7 +398,7 @@ function makeResolveGatsbyImageData(cache) {
388398
options
389399
) {
390400
if (
391-
!['image/png', 'image/jpg', 'image/jpeg', 'image/tiff'].includes(mimeType)
401+
!['image/png', 'image/jpg', 'image/jpeg', 'image/tiff', 'image/webp'].includes(mimeType)
392402
) {
393403
return null
394404
}
@@ -439,7 +449,7 @@ function makeResolveGatsbyImageData(cache) {
439449

440450
export function createResolvers(
441451
{ createResolvers, cache },
442-
{ typePrefix = 'GraphCMS_' }
452+
{ typePrefix = 'GraphCMS_', downloadLocalImages = false }
443453
) {
444454
const args = {
445455
quality: {
@@ -464,6 +474,14 @@ export function createResolvers(
464474
type: 'JSON',
465475
},
466476
},
477+
...(downloadLocalImages && {
478+
File: {
479+
gatsbyImageData: {
480+
...getGatsbyImageResolver(makeResolveGatsbyImageData(cache), args),
481+
type: 'JSON',
482+
},
483+
},
484+
}),
467485
}
468486

469487
createResolvers(resolvers)

0 commit comments

Comments
 (0)