[babel 8] Use the JSX automatic runtime by default (#12630)

Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
Co-authored-by: Arun Kumar Mohan <arunmohandm@gmail.com>
This commit is contained in:
Nicolò Ribaudo 2021-01-19 01:41:07 +01:00 committed by GitHub
parent 6e8250a3a6
commit 10978bb65a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
103 changed files with 217 additions and 93 deletions

View File

@ -1,7 +1,7 @@
{ {
"presets": [ "presets": [
"../../babel-preset-env", "../../babel-preset-env",
["../../babel-preset-react"] ["../../babel-preset-react", { "runtime": "classic" }]
], ],
"plugins": [ "plugins": [
"../../babel-plugin-transform-strict-mode", "../../babel-plugin-transform-strict-mode",

View File

@ -2,7 +2,7 @@
"plugins": [ "plugins": [
"external-helpers", "external-helpers",
"transform-async-to-generator", "transform-async-to-generator",
"transform-react-jsx", ["transform-react-jsx", { "runtime": "classic" }],
"transform-react-constant-elements" "transform-react-constant-elements"
] ]
} }

View File

@ -2,7 +2,7 @@
"plugins": [ "plugins": [
"transform-block-scoping", "transform-block-scoping",
"syntax-jsx", "syntax-jsx",
"transform-react-jsx", ["transform-react-jsx", { "runtime": "classic" }],
"transform-block-scoped-functions", "transform-block-scoped-functions",
"transform-arrow-functions" "transform-arrow-functions"
] ]

View File

@ -1,4 +1,7 @@
{ {
"plugins": ["external-helpers", "proposal-class-properties"], "plugins": ["external-helpers", "proposal-class-properties"],
"presets": [["env", { "targets": { "browsers": "ie 6" } }], "react"] "presets": [
["env", { "targets": { "browsers": "ie 6" } }],
["react", { "runtime": "classic" }]
]
} }

View File

@ -1,3 +1,6 @@
{ {
"presets": [["env", { "targets": { "browsers": "ie 6" } }], "react"] "presets": [
["env", { "targets": { "browsers": "ie 6" } }],
["react", { "runtime": "classic" }]
]
} }

View File

@ -1,3 +1,6 @@
{ {
"plugins": ["transform-react-jsx", "transform-react-constant-elements"] "plugins": [
["transform-react-jsx", { "runtime": "classic" }],
"transform-react-constant-elements"
]
} }

View File

@ -1,3 +1,6 @@
{ {
"plugins": ["transform-react-jsx", "transform-react-constant-elements"] "plugins": [
["transform-react-jsx", { "runtime": "classic" }],
"transform-react-constant-elements"
]
} }

View File

@ -3,7 +3,7 @@
"external-helpers", "external-helpers",
"syntax-jsx", "syntax-jsx",
"transform-react-inline-elements", "transform-react-inline-elements",
"transform-react-jsx", ["transform-react-jsx", { "runtime": "classic" }],
"transform-modules-commonjs" "transform-modules-commonjs"
] ]
} }

View File

@ -3,7 +3,7 @@
"external-helpers", "external-helpers",
"syntax-jsx", "syntax-jsx",
"transform-react-inline-elements", "transform-react-inline-elements",
"transform-react-jsx", ["transform-react-jsx", { "runtime": "classic" }],
"transform-modules-commonjs" "transform-modules-commonjs"
] ]
} }

View File

@ -3,6 +3,6 @@
"external-helpers", "external-helpers",
"syntax-jsx", "syntax-jsx",
"transform-react-inline-elements", "transform-react-inline-elements",
"transform-react-jsx" ["transform-react-jsx", { "runtime": "classic" }]
] ]
} }

View File

@ -30,7 +30,11 @@ export default function createPlugin({ name, development }) {
// TODO (Babel 8): It should throw if this option is used with the automatic runtime // TODO (Babel 8): It should throw if this option is used with the automatic runtime
filter, filter,
runtime: RUNTIME_DEFAULT = development ? "automatic" : "classic", runtime: RUNTIME_DEFAULT = process.env.BABEL_8_BREAKING
? "automatic"
: development
? "automatic"
: "classic",
importSource: IMPORT_SOURCE_DEFAULT = DEFAULT.importSource, importSource: IMPORT_SOURCE_DEFAULT = DEFAULT.importSource,
pragma: PRAGMA_DEFAULT = DEFAULT.pragma, pragma: PRAGMA_DEFAULT = DEFAULT.pragma,

View File

@ -0,0 +1,5 @@
{
"plugins": [
["transform-react-jsx", { "pure": false, "runtime": "automatic" }]
]
}

View File

@ -0,0 +1,3 @@
var _reactJsxRuntime = require("react/jsx-runtime");
_reactJsxRuntime.jsx("div", {});

View File

@ -0,0 +1,5 @@
{
"plugins": [
["transform-react-jsx", { "pure": false, "runtime": "classic" }]
]
}

View File

@ -1,5 +0,0 @@
{
"plugins": [
["transform-react-jsx", { "pure": false }]
]
}

View File

@ -0,0 +1,6 @@
{
"plugins": [
["transform-react-jsx", { "pure": false, "runtime": "automatic" }]
],
"throws": "pragma and pragmaFrag cannot be set when runtime is automatic"
}

View File

@ -0,0 +1,5 @@
{
"plugins": [
["transform-react-jsx", { "pure": false, "runtime": "classic" }]
]
}

View File

@ -1,5 +0,0 @@
{
"plugins": [
["transform-react-jsx", { "pure": false }]
]
}

View File

@ -0,0 +1,6 @@
{
"plugins": [
["transform-react-jsx", { "pragma": "h", "pure": false, "runtime": "automatic" }]
],
"throws": "pragma and pragmaFrag cannot be set when runtime is automatic."
}

View File

@ -0,0 +1,5 @@
{
"plugins": [
["transform-react-jsx", { "pragma": "h", "pure": false, "runtime": "classic" }]
]
}

View File

@ -1,5 +0,0 @@
{
"plugins": [
["transform-react-jsx", { "pragma": "h", "pure": false }]
]
}

View File

@ -0,0 +1,5 @@
{
"plugins": [
["transform-react-jsx", { "pure": true, "runtime": "automatic" }]
]
}

View File

@ -0,0 +1,4 @@
var _reactJsxRuntime = require("react/jsx-runtime");
/*#__PURE__*/
_reactJsxRuntime.jsx("div", {});

View File

@ -0,0 +1,5 @@
{
"plugins": [
["transform-react-jsx", { "pure": true, "runtime": "classic" }]
]
}

View File

@ -1,5 +0,0 @@
{
"plugins": [
["transform-react-jsx", { "pure": true }]
]
}

View File

@ -0,0 +1,6 @@
{
"plugins": [
["transform-react-jsx", { "pure": true, "runtime": "automatic" }]
],
"throws": "pragma and pragmaFrag cannot be set when runtime is automatic"
}

View File

@ -0,0 +1,3 @@
/* @jsx h */
<div />;

View File

@ -0,0 +1,5 @@
{
"plugins": [
["transform-react-jsx", { "pure": true, "runtime": "classic" }]
]
}

View File

@ -1,5 +0,0 @@
{
"plugins": [
["transform-react-jsx", { "pure": true }]
]
}

View File

@ -0,0 +1,6 @@
{
"plugins": [
["transform-react-jsx", { "pragma": "h", "pure": true, "runtime": "automatic" }]
],
"throws": "pragma and pragmaFrag cannot be set when runtime is automatic."
}

View File

@ -0,0 +1,5 @@
{
"plugins": [
["transform-react-jsx", { "pragma": "h", "pure": true, "runtime": "classic" }]
]
}

View File

@ -1,5 +0,0 @@
{
"plugins": [
["transform-react-jsx", { "pragma": "h", "pure": true }]
]
}

View File

@ -0,0 +1,5 @@
{
"plugins": [
["transform-react-jsx", { "runtime": "automatic" }]
]
}

View File

@ -0,0 +1,4 @@
var _reactJsxRuntime = require("react/jsx-runtime");
/*#__PURE__*/
_reactJsxRuntime.jsx("div", {});

View File

@ -0,0 +1,5 @@
{
"plugins": [
["transform-react-jsx", { "runtime": "classic" }]
]
}

View File

@ -1,5 +0,0 @@
{
"plugins": [
["transform-react-jsx", {}]
]
}

View File

@ -0,0 +1,3 @@
/* @jsx h */
<div />;

View File

@ -0,0 +1,6 @@
{
"plugins": [
["transform-react-jsx", { "runtime": "automatic" }]
],
"throws": "pragma and pragmaFrag cannot be set when runtime is automatic"
}

View File

@ -0,0 +1,3 @@
/* @jsx h */
<div />;

View File

@ -0,0 +1,5 @@
{
"plugins": [
["transform-react-jsx", { "runtime": "classic" }]
]
}

View File

@ -1,5 +0,0 @@
{
"plugins": [
["transform-react-jsx", {}]
]
}

View File

@ -0,0 +1,6 @@
{
"plugins": [
["transform-react-jsx", { "pragma": "h", "runtime": "automatic" }]
],
"throws": "pragma and pragmaFrag cannot be set when runtime is automatic."
}

View File

@ -0,0 +1,5 @@
{
"plugins": [
["transform-react-jsx", { "pragma": "h", "runtime": "classic" }]
]
}

View File

@ -1,5 +0,0 @@
{
"plugins": [
["transform-react-jsx", { "pragma": "h" }]
]
}

View File

@ -1,3 +1,3 @@
{ {
"plugins": [["transform-react-jsx", { "pragma": "foo.bar" }]] "plugins": [["transform-react-jsx", { "pragma": "foo.bar", "runtime": "classic" }]]
} }

View File

@ -1,3 +1,3 @@
{ {
"plugins": [["transform-react-jsx", { "pragma": "dom" }]] "plugins": [["transform-react-jsx", { "pragma": "dom", "runtime": "classic" }]]
} }

View File

@ -2,7 +2,7 @@
"plugins": [ "plugins": [
"external-helpers", "external-helpers",
"syntax-jsx", "syntax-jsx",
"transform-react-jsx", ["transform-react-jsx", { "runtime": "classic" }],
"transform-arrow-functions" "transform-arrow-functions"
] ]
} }

View File

@ -1,3 +1,6 @@
{ {
"plugins": ["transform-react-jsx", "transform-property-literals"] "plugins": [
["transform-react-jsx", { "runtime": "classic" }],
"transform-property-literals"
]
} }

View File

@ -4,6 +4,7 @@
"transform-react-jsx", "transform-react-jsx",
{ {
"pragma": "h", "pragma": "h",
"runtime": "classic",
"throwIfNamespace": false "throwIfNamespace": false
} }
] ]

View File

@ -4,6 +4,7 @@
"transform-react-jsx", "transform-react-jsx",
{ {
"pragma": "h", "pragma": "h",
"runtime": "classic",
"throwIfNamespace": true "throwIfNamespace": true
} }
] ]

View File

@ -0,0 +1,5 @@
{
"plugins": [
["transform-react-jsx", { "runtime": "classic" }]
]
}

View File

@ -1,5 +0,0 @@
{
"plugins": [
"transform-react-jsx"
]
}

View File

@ -1,3 +1,4 @@
{ {
"BABEL_8_BREAKING": true,
"plugins": ["transform-react-jsx"] "plugins": ["transform-react-jsx"]
} }

View File

@ -0,0 +1,5 @@
var _reactJsxRuntime = require("react/jsx-runtime");
var x = /*#__PURE__*/_reactJsxRuntime.jsx("div", {
children: /*#__PURE__*/_reactJsxRuntime.jsx("span", {})
});

View File

@ -0,0 +1 @@
var x = (<div><span /></div>);

View File

@ -0,0 +1,4 @@
{
"BABEL_8_BREAKING": false,
"plugins": ["transform-react-jsx"]
}

View File

@ -1,6 +1,7 @@
{ {
"plugins": ["transform-react-jsx", ["proposal-object-rest-spread", { "plugins": [
"loose": true, ["transform-react-jsx", { "runtime": "classic" }],
"useBuiltIns": false ["proposal-object-rest-spread", { "loose": true, "useBuiltIns": false }],
}], "external-helpers"] "external-helpers"
]
} }

View File

@ -1,3 +1,5 @@
var div = /*#__PURE__*/React.createElement(Component, Object.assign({}, props, { var _reactJsxRuntime = require("react/jsx-runtime");
var div = /*#__PURE__*/_reactJsxRuntime.jsx(Component, Object.assign({}, props, {
foo: "bar" foo: "bar"
})); }));

View File

@ -1,4 +1,6 @@
{ {
"presets": ["react"], "presets": [
["react", { "runtime": "classic" }]
],
"plugins": ["transform-regenerator"] "plugins": ["transform-regenerator"]
} }

View File

@ -7,23 +7,23 @@ import transformReactPure from "@babel/plugin-transform-react-pure-annotations";
export default declare((api, opts) => { export default declare((api, opts) => {
api.assertVersion(7); api.assertVersion(7);
let { pragma, pragmaFrag } = opts; let { pragma, pragmaFrag, development = false } = opts;
const { const {
pure, pure,
throwIfNamespace = true, throwIfNamespace = true,
runtime = "classic", runtime = process.env.BABEL_8_BREAKING ? "automatic" : "classic",
importSource, importSource,
} = opts; } = opts;
// TODO: (Babel 8) Remove setting these defaults if (!process.env.BABEL_8_BREAKING) {
if (runtime === "classic") { if (runtime === "classic") {
pragma = pragma || "React.createElement"; pragma = pragma || "React.createElement";
pragmaFrag = pragmaFrag || "React.Fragment"; pragmaFrag = pragmaFrag || "React.Fragment";
} }
// TODO: (Babel 8) Don't cast this option but validate it development = !!development;
const development = !!opts.development; }
if (process.env.BABEL_8_BREAKING) { if (process.env.BABEL_8_BREAKING) {
if ("useSpread" in opts) { if ("useSpread" in opts) {

View File

@ -1,4 +1,4 @@
{ {
"presets": [["react", { "development": true }]], "presets": [["react", { "development": true, "runtime": "classic" }]],
"os": ["win32"] "os": ["win32"]
} }

View File

@ -1,4 +1,4 @@
{ {
"presets": [["react", { "development": true }]], "presets": [["react", { "development": true, "runtime": "classic" }]],
"os": ["linux", "darwin"] "os": ["linux", "darwin"]
} }

View File

@ -0,0 +1,4 @@
{
"BABEL_8_BREAKING": false,
"presets": [["react", {}]]
}

View File

@ -1,3 +1,4 @@
{ {
"BABEL_8_BREAKING": true,
"presets": [["react", {}]] "presets": [["react", {}]]
} }

View File

@ -1,4 +1,6 @@
var _reactJsxRuntime = require("react/jsx-runtime");
/*#__PURE__*/ /*#__PURE__*/
React.createElement(Foo, { _reactJsxRuntime.jsx(Foo, {
bar: "baz" bar: "baz"
}); });

View File

@ -1,3 +0,0 @@
{
"presets": ["react"]
}

View File

@ -1,3 +1,5 @@
{ {
"presets": ["react"] "presets": [
["react", { "runtime": "classic" }]
]
} }

View File

@ -1,4 +1,4 @@
{ {
"presets": [ "presets": [
["react", { "pragma": "__jsx" }]] ["react", { "pragma": "__jsx", "runtime": "classic" }]]
} }

View File

@ -1,3 +1,3 @@
module.exports = () => ({ module.exports = () => ({
plugins: [["@babel/plugin-transform-react-jsx", { pragma: "___EmotionJSX" }]], plugins: [["@babel/plugin-transform-react-jsx", { pragma: "___EmotionJSX", runtime: "classic" }]],
}); });

View File

@ -1,3 +1,3 @@
module.exports = () => ({ module.exports = () => ({
presets: [["@babel/preset-react", { development: true }]], presets: [["@babel/preset-react", { development: true, runtime: "classic" }]],
}); });

Some files were not shown because too many files have changed in this diff Show More