forked from babel/babel
/
index.js
36 lines (31 loc) 路 1.18 KB
/
index.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
34
35
36
import { declare } from "@babel/helper-plugin-utils";
import transformReactJSX from "@babel/plugin-transform-react-jsx";
import transformReactDisplayName from "@babel/plugin-transform-react-display-name";
import transformReactJSXSource from "@babel/plugin-transform-react-jsx-source";
import transformReactJSXSelf from "@babel/plugin-transform-react-jsx-self";
export default declare((api, opts) => {
api.assertVersion(7);
const pragma = opts.pragma || "React.createElement";
const pragmaFrag = opts.pragmaFrag || "React.Fragment";
const throwIfNamespace =
opts.throwIfNamespace === undefined ? true : !!opts.throwIfNamespace;
const development = !!opts.development;
const useBuiltIns = !!opts.useBuiltIns;
const useSpread = !!opts.useSpread;
if (typeof development !== "boolean") {
throw new Error(
"@babel/preset-react 'development' option must be a boolean.",
);
}
return {
plugins: [
[
transformReactJSX,
{ pragma, pragmaFrag, throwIfNamespace, useBuiltIns, useSpread },
],
transformReactDisplayName,
development && transformReactJSXSource,
development && transformReactJSXSelf,
].filter(Boolean),
};
});