@@ -5,13 +5,11 @@ import {
5
5
Actions ,
6
6
Store ,
7
7
} from "gatsby"
8
- import * as PluginSharp from "gatsby-plugin-sharp"
9
- import { createFileNode } from "gatsby-source-filesystem/create-file-node"
10
8
import fs from "fs-extra"
11
9
import path from "path"
12
10
import { ImageProps , SharpProps } from "../utils"
13
11
import { watchImage } from "./watcher"
14
- import { createRemoteFileNode , FileSystemNode } from "gatsby-source-filesystem"
12
+ import type { FileSystemNode } from "gatsby-source-filesystem"
15
13
16
14
const supportedTypes = new Set ( [ `image/png` , `image/jpeg` , `image/webp` ] )
17
15
export interface IImageMetadata {
@@ -25,15 +23,27 @@ export async function createImageNode({
25
23
fullPath,
26
24
createNodeId,
27
25
createNode,
26
+ reporter,
28
27
} : {
29
28
fullPath : string
30
29
createNodeId : ParentSpanPluginArgs [ "createNodeId" ]
31
30
createNode : Actions [ "createNode" ]
31
+ reporter : Reporter
32
32
} ) : Promise < FileSystemNode | undefined > {
33
33
if ( ! fs . existsSync ( fullPath ) ) {
34
34
return undefined
35
35
}
36
- const file : FileSystemNode = await createFileNode ( fullPath , createNodeId , { } )
36
+
37
+ let file : FileSystemNode
38
+ try {
39
+ const {
40
+ createFileNode,
41
+ } = require ( `gatsby-source-filesystem/create-file-node` )
42
+ file = await createFileNode ( fullPath , createNodeId , { } )
43
+ } catch ( e ) {
44
+ reporter . panic ( `Please install gatsby-source-filesystem` )
45
+ return undefined
46
+ }
37
47
38
48
if ( ! file ) {
39
49
return undefined
@@ -75,6 +85,13 @@ export async function writeImages({
75
85
let file : FileSystemNode | undefined
76
86
let fullPath
77
87
if ( process . env . GATSBY_EXPERIMENTAL_REMOTE_IMAGES && isRemoteURL ( src ) ) {
88
+ let createRemoteFileNode
89
+ try {
90
+ ; ( { createRemoteFileNode } = require ( `gatsby-source-filesystem` ) )
91
+ } catch ( e ) {
92
+ reporter . panic ( `Please install gatsby-source-filesystem` )
93
+ }
94
+
78
95
try {
79
96
file = await createRemoteFileNode ( {
80
97
url : src ,
@@ -89,12 +106,12 @@ export async function writeImages({
89
106
return
90
107
}
91
108
if (
92
- ! file . internal . mediaType ||
109
+ ! file ? .internal . mediaType ||
93
110
! supportedTypes . has ( file . internal . mediaType )
94
111
) {
95
112
reporter . error (
96
113
`The file loaded from ${ src } is not a valid image type. Found "${
97
- file . internal . mediaType || `unknown`
114
+ file ? .internal . mediaType || `unknown`
98
115
} "`
99
116
)
100
117
return
@@ -106,7 +123,16 @@ export async function writeImages({
106
123
reporter . warn ( `Could not find image "${ src } ". Looked for ${ fullPath } ` )
107
124
return
108
125
}
109
- file = await createFileNode ( fullPath , createNodeId , { } )
126
+
127
+ try {
128
+ const {
129
+ createFileNode,
130
+ } = require ( `gatsby-source-filesystem/create-file-node` )
131
+
132
+ file = await createFileNode ( fullPath , createNodeId , { } )
133
+ } catch ( e ) {
134
+ reporter . panic ( `Please install gatsby-source-filesystem` )
135
+ }
110
136
}
111
137
112
138
if ( ! file ) {
@@ -161,15 +187,21 @@ export async function writeImage(
161
187
cache : GatsbyCache ,
162
188
filename : string
163
189
) : Promise < void > {
190
+ let generateImageData
191
+ try {
192
+ generateImageData = require ( `gatsby-plugin-sharp` ) . generateImageData
193
+ } catch ( e ) {
194
+ reporter . panic ( `Please install gatsby-plugin-sharp` )
195
+ }
164
196
try {
165
197
const options = { file, args, pathPrefix, reporter, cache }
166
198
167
- if ( ! PluginSharp . generateImageData ) {
199
+ if ( ! generateImageData ) {
168
200
reporter . warn ( `Please upgrade gatsby-plugin-sharp` )
169
201
return
170
202
}
171
203
// get standard set of fields from sharp
172
- const sharpData = await PluginSharp . generateImageData ( options )
204
+ const sharpData = await generateImageData ( options )
173
205
174
206
if ( sharpData ) {
175
207
// Write the image properties to the cache
0 commit comments