Skip to content

Commit 63d091a

Browse files
authored
fix(gatsby-plugin-mdx): Use getNodesByType for plugin transformation (#22555)
Since getSourcePluginsAsRemarkPlugins is called on every MDX file, the getNodes call became expensive at scale with thousands of MDX files. This was encountered when attempting to find underlying issues for #22521. @pvdz had a hunch that node traversal may be a culprit. This doesn't fully address all underlying performance issues but is a quick win. 8k MDX pages: 440s => 350s 16k MDX pages: 1100s => 750s
1 parent b907bda commit 63d091a

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

packages/gatsby-plugin-mdx/loaders/mdx-loader.test.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,10 @@ describe(`mdx-loader`, () => {
7474
}
7575
},
7676
query: {
77-
getNodes() {
77+
getNodes(_type) {
78+
return fixtures.map(([, node]) => node)
79+
},
80+
getNodesByType(_type) {
7881
return fixtures.map(([, node]) => node)
7982
},
8083
pluginOptions: {},

packages/gatsby-plugin-mdx/utils/get-source-plugins-as-remark-plugins.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ module.exports = async function getSourcePluginsAsRemarkPlugins({
1313
gatsbyRemarkPlugins,
1414
mdxNode,
1515
getNode,
16-
getNodes,
16+
getNodesByType,
1717
reporter,
1818
cache,
1919
pathPrefix,
@@ -39,7 +39,7 @@ module.exports = async function getSourcePluginsAsRemarkPlugins({
3939
}
4040
}
4141

42-
fileNodes = getNodes().filter(n => n.internal.type === `File`)
42+
fileNodes = getNodesByType(`File`)
4343

4444
// return list of remarkPlugins
4545
const userPlugins = gatsbyRemarkPlugins

0 commit comments

Comments
 (0)