[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": [
"../../babel-preset-env",
["../../babel-preset-react"]
["../../babel-preset-react", { "runtime": "classic" }]
],
"plugins": [
"../../babel-plugin-transform-strict-mode",

View File

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

View File

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

View File

@ -1,4 +1,7 @@
{
"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",
"syntax-jsx",
"transform-react-inline-elements",
"transform-react-jsx",
["transform-react-jsx", { "runtime": "classic" }],
"transform-modules-commonjs"
]
}

View File

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

View File

@ -3,6 +3,6 @@
"external-helpers",
"syntax-jsx",
"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
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,
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": [
"external-helpers",
"syntax-jsx",
"transform-react-jsx",
["transform-react-jsx", { "runtime": "classic" }],
"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",
{
"pragma": "h",
"runtime": "classic",
"throwIfNamespace": false
}
]

View File

@ -4,6 +4,7 @@
"transform-react-jsx",
{
"pragma": "h",
"runtime": "classic",
"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

@ -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", {
"loose": true,
"useBuiltIns": false
}], "external-helpers"]
"plugins": [
["transform-react-jsx", { "runtime": "classic" }],
["proposal-object-rest-spread", { "loose": true, "useBuiltIns": false }],
"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"
}));

View File

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

View File

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

View File

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

View File

@ -1,4 +1,4 @@
{
"presets": [["react", { "development": true }]],
"presets": [["react", { "development": true, "runtime": "classic" }]],
"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", {}]]
}

View File

@ -1,4 +1,6 @@
var _reactJsxRuntime = require("react/jsx-runtime");
/*#__PURE__*/
React.createElement(Foo, {
_reactJsxRuntime.jsx(Foo, {
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": [
["react", { "pragma": "__jsx" }]]
["react", { "pragma": "__jsx", "runtime": "classic" }]]
}

View File

@ -1,3 +1,3 @@
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 = () => ({
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