-
Notifications
You must be signed in to change notification settings - Fork 10.3k
/
gatsby-node.ts
61 lines (54 loc) · 1.39 KB
/
gatsby-node.ts
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import { GatsbyNode } from "gatsby"
import { getCacheDir } from "./node-apis/node-utils"
import {
ImageFormatType,
ImageLayoutType,
ImagePlaceholderType,
} from "./resolver-utils"
import { major } from "semver"
export * from "./node-apis/preprocess-source"
export const createSchemaCustomization: GatsbyNode["createSchemaCustomization"] =
({ actions, schema }) => {
actions.createTypes([
schema.buildEnumType(ImageFormatType),
schema.buildEnumType(ImageLayoutType),
schema.buildEnumType(ImagePlaceholderType),
])
}
export const onCreateBabelConfig: GatsbyNode["onCreateBabelConfig"] = ({
actions,
store,
}) => {
const root = store.getState().program.directory
const cacheDir = getCacheDir(root)
actions.setBabelPlugin({
name: require.resolve(`./babel-plugin-parse-static-images`),
options: {
cacheDir,
},
})
}
export const onCreateWebpackConfig: GatsbyNode["onCreateWebpackConfig"] = ({
stage,
plugins,
actions,
}) => {
if (
stage !== `develop` &&
stage !== `build-javascript` &&
stage !== `build-html`
) {
return
}
actions.setWebpackConfig({
plugins: [
plugins.define({
// eslint-disable-next-line @typescript-eslint/naming-convention
GATSBY___IMAGE: true,
HAS_REACT_18: JSON.stringify(
major(require(`react-dom/package.json`).version) >= 18
),
}),
],
})
}