Skip to content

Commit 6375ba9

Browse files
authored
fix(gatsby-plugin-mdx): support yarn PnP (#20638)
* Add missing dependencies explicitly * Use the util from the core package * Remove explicit deps * Move createRequireFromPath to gatsby-core-utils * Remove peerDeps of gatsby
1 parent 4ad2a24 commit 6375ba9

File tree

7 files changed

+27
-8
lines changed

7 files changed

+27
-8
lines changed

packages/gatsby-core-utils/README.md

+14
Original file line numberDiff line numberDiff line change
@@ -90,3 +90,17 @@ console.log({ CI_NAME })
9090
// {CI_NAME: "ZEIT Now"}
9191
// ...
9292
```
93+
94+
### createRequireFromPath
95+
96+
A cross-version polyfill for Node's [`Module.createRequire`](https://nodejs.org/api/modules.html#modules_module_createrequire_filename).
97+
98+
```js
99+
const { createRequireFromPath } = require("gatsby-core-utils")
100+
101+
const requireUtil = createRequireFromPath("../src/utils/")
102+
103+
// Require `../src/utils/some-tool`
104+
requireUtil("./some-tool")
105+
// ...
106+
```

packages/gatsby-core-utils/src/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ exports.cpuCoreCount = require(`./cpu-core-count`)
66
exports.urlResolve = require(`./url`).resolve
77
exports.isCI = require(`./ci`).isCI
88
exports.getCIName = require(`./ci`).getCIName
9+
exports.createRequireFromPath = require(`./create-require-from-path`)

packages/gatsby-plugin-mdx/gatsby-node.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ exports.preprocessSource = require(`./gatsby/preprocess-source`)
4141
*/
4242
exports.onCreateBabelConfig = ({ actions }) => {
4343
actions.setBabelPlugin({
44-
name: `@babel/plugin-proposal-object-rest-spread`,
44+
name: require.resolve(`@babel/plugin-proposal-object-rest-spread`),
4545
})
4646
}
4747

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

+9-5
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const { getOptions } = require(`loader-utils`)
33
const grayMatter = require(`gray-matter`)
44
const unified = require(`unified`)
55
const babel = require(`@babel/core`)
6+
const { createRequireFromPath, slash } = require(`gatsby-core-utils`)
67

78
const {
89
isImport,
@@ -12,16 +13,19 @@ const {
1213
EMPTY_NEWLINE,
1314
} = require(`@mdx-js/mdx/util`)
1415

15-
const toMDAST = require(`remark-parse`)
16-
const squeeze = require(`remark-squeeze-paragraphs`)
16+
// Some packages are required implicitly from @mdx-js/mdx (not listed in package.json).
17+
// To support yarn PnP, we need them to be required from their direct parent.
18+
const requireFromMDX = createRequireFromPath(require.resolve(`@mdx-js/mdx`))
19+
20+
const toMDAST = requireFromMDX(`remark-parse`)
21+
const squeeze = requireFromMDX(`remark-squeeze-paragraphs`)
1722
const debug = require(`debug`)(`gatsby-plugin-mdx:mdx-loader`)
1823
const debugMore = require(`debug`)(`gatsby-plugin-mdx-info:mdx-loader`)
1924

2025
const genMdx = require(`../utils/gen-mdx`)
2126
const withDefaultOptions = require(`../utils/default-options`)
2227
const createMDXNode = require(`../utils/create-mdx-node`)
2328
const { createFileNode } = require(`../utils/create-fake-file-node`)
24-
const { slash } = require(`gatsby-core-utils`)
2529

2630
const DEFAULT_OPTIONS = {
2731
footnotes: true,
@@ -171,8 +175,8 @@ ${contentWithoutFrontmatter}`
171175
const result = babel.transform(rawMDXOutput, {
172176
configFile: false,
173177
plugins: [
174-
require(`@babel/plugin-syntax-jsx`),
175-
require(`@babel/plugin-syntax-object-rest-spread`),
178+
requireFromMDX(`@babel/plugin-syntax-jsx`),
179+
requireFromMDX(`@babel/plugin-syntax-object-rest-spread`),
176180
require(`../utils/babel-plugin-html-attr-to-jsx-attr`),
177181
],
178182
})

packages/gatsby/src/bootstrap/load-plugins/load.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ const { warnOnIncompatiblePeerDependency } = require(`./validate`)
88
const { store } = require(`../../redux`)
99
const existsSync = require(`fs-exists-cached`).sync
1010
const createNodeId = require(`../../utils/create-node-id`)
11-
const createRequireFromPath = require(`../../utils/create-require-from-path`)
11+
const { createRequireFromPath } = require(`gatsby-core-utils`)
1212

1313
function createFileContentHash(root, globPattern) {
1414
const hash = crypto.createHash(`md5`)

packages/gatsby/src/utils/gatsby-dependents.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { store } from "../redux"
22
import { memoize } from "lodash"
33

4-
const createRequireFromPath = require(`./create-require-from-path`)
4+
const { createRequireFromPath } = require(`gatsby-core-utils`)
55
const { join, dirname } = require(`path`)
66

77
const fs = require(`fs`)

0 commit comments

Comments
 (0)