Skip to content

Commit 7b4b30e

Browse files
Initial project commit
1 parent b7192cc commit 7b4b30e

File tree

5 files changed

+824
-0
lines changed

5 files changed

+824
-0
lines changed

README.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,61 @@
11
# jest-mdx-loader
2+
23
Jest transformer that wraps mdx-js/mx webpack loader
4+
5+
## Install
6+
7+
```
8+
yarn add --dev jest-mdx-loader
9+
```
10+
11+
## Usage
12+
13+
Install jest-mdx-loader and then add it to your jest.config.js under transform:
14+
15+
```js
16+
/// jest.config.js
17+
18+
module.exports = {
19+
//...
20+
transform: {
21+
"^.+\\.jsx?$": "babel-jest",
22+
".mdx?$": "jest-mdx-loader"
23+
}
24+
//...
25+
};
26+
```
27+
28+
If you need to perform any additional pre-processing prior to parsing with mdx you can easily extend the loader as follows:
29+
30+
```js
31+
// src/my-custom-jest-mdx-loader.js
32+
33+
preMdxParseCallback = function(src) {
34+
var modifiedSrc = src;
35+
36+
// CUSTOM LOGIC HERE
37+
38+
return modifiedSrc;
39+
};
40+
41+
module.exports = {
42+
process: createTransformer(preMdxParseCallback)
43+
};
44+
```
45+
46+
```js
47+
/// jest.config.js
48+
49+
module.exports = {
50+
//...
51+
transform: {
52+
"^.+\\.jsx?$": "babel-jest",
53+
".mdx?$": "<rootDir>/src/my-custom-jest-mdx-loader.js"
54+
}
55+
//...
56+
};
57+
```
58+
59+
## Licence
60+
61+
MIT © [Joseph Black](https://josephconradblack.com)

createTransformer.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
var mdx = require("@mdx-js/mdx");
2+
var babel = require("babel-core");
3+
4+
createTransformer = function(preMdxParseCallback) {
5+
return function(src, filename, config, options) {
6+
let rawMDX = src;
7+
8+
if (preMdxParseCallback) {
9+
rawMDX = preMdxParseCallback(rawMDX);
10+
}
11+
12+
// Convert .MDX file into JSX
13+
var rawJSX = mdx.sync(rawMDX);
14+
15+
// Inject React and MDXTag imports
16+
var injectedJSX =
17+
"import React from 'react'; import MDXTag from '@mdx-js/tag/dist/mdx-tag';" +
18+
rawJSX;
19+
20+
// Transform ES6 with babel
21+
var babelRes = babel.transform(injectedJSX, {
22+
presets: ["env", "react"],
23+
plugins: [
24+
"transform-class-properties",
25+
"transform-object-rest-spread",
26+
"react-hot-loader/babel"
27+
]
28+
}).code;
29+
30+
return babelRes;
31+
};
32+
};
33+
34+
module.exports = createTransformer;

index.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
"use strict";
2+
3+
var createTransformer = require("./src/createTransformer");
4+
5+
module.exports = {
6+
process: createTransformer()
7+
};

package.json

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"name": "jest-mdx-loader",
3+
"version": "0.1.0",
4+
"description": "Jest transformer that wraps mdx-js/mx webpack loader",
5+
"main": "index.js",
6+
"scripts": {},
7+
"repository": {
8+
"type": "git",
9+
"url": "git+https://github.com/JosephConradBlack/jest-mdx-loader.git"
10+
},
11+
"keywords": [
12+
"jest",
13+
"mdx"
14+
],
15+
"devDependencies": {
16+
"@mdx-js/loader": "^0.15.0",
17+
"@mdx-js/mdx": "^0.15.0",
18+
"babel-core": "^6.26.3"
19+
},
20+
"author": "Joseph Black <josephconradblack@gmail.com> (https://josephconradblack.com)",
21+
"license": "MIT",
22+
"bugs": {
23+
"url": "https://github.com/JosephConradBlack/jest-mdx-loader/issues"
24+
},
25+
"homepage": "https://github.com/JosephConradBlack/jest-mdx-loader#readme"
26+
}

0 commit comments

Comments
 (0)