-
Notifications
You must be signed in to change notification settings - Fork 1
/
gatsby-ssr.js
33 lines (30 loc) · 989 Bytes
/
gatsby-ssr.js
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
/**
* Implement Gatsby's SSR (Server Side Rendering) APIs in this file.
*
* See: https://www.gatsbyjs.org/docs/ssr-apis/
*/
const isGeneratorTag = (type, name) => type === 'meta' && name === 'generator'
/**
*
* @param apiContext Context provided by Gatsby
* @param pluginOpts User supplied plugin options
* @see https://www.gatsbyjs.org/docs/ssr-apis/#onPreRenderHTML
*/
exports.onPreRenderHTML = (
{ getHeadComponents, replaceHeadComponents },
{ removeVersionOnly = false, content } = {},
) => {
const keepTag = removeVersionOnly || content != undefined
const headComponents = getHeadComponents()
.map(c =>
isGeneratorTag(c.type, c.props ? c.props.name : '')
? Object.assign({}, c, {
props: Object.assign({}, c.props, { content: content || 'Gatsby' }),
})
: c,
)
.filter(({ type, props: { name, content } = {} }) =>
keepTag ? true : !isGeneratorTag(type, name),
)
replaceHeadComponents(headComponents)
}