[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:
parent
6e8250a3a6
commit
10978bb65a
@ -1,7 +1,7 @@
|
||||
{
|
||||
"presets": [
|
||||
"../../babel-preset-env",
|
||||
["../../babel-preset-react"]
|
||||
["../../babel-preset-react", { "runtime": "classic" }]
|
||||
],
|
||||
"plugins": [
|
||||
"../../babel-plugin-transform-strict-mode",
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
"plugins": [
|
||||
"external-helpers",
|
||||
"transform-async-to-generator",
|
||||
"transform-react-jsx",
|
||||
["transform-react-jsx", { "runtime": "classic" }],
|
||||
"transform-react-constant-elements"
|
||||
]
|
||||
}
|
||||
|
||||
@ -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"
|
||||
]
|
||||
|
||||
@ -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" }]
|
||||
]
|
||||
}
|
||||
|
||||
@ -1,3 +1,6 @@
|
||||
{
|
||||
"presets": [["env", { "targets": { "browsers": "ie 6" } }], "react"]
|
||||
"presets": [
|
||||
["env", { "targets": { "browsers": "ie 6" } }],
|
||||
["react", { "runtime": "classic" }]
|
||||
]
|
||||
}
|
||||
|
||||
@ -1,3 +1,6 @@
|
||||
{
|
||||
"plugins": ["transform-react-jsx", "transform-react-constant-elements"]
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "runtime": "classic" }],
|
||||
"transform-react-constant-elements"
|
||||
]
|
||||
}
|
||||
|
||||
@ -1,3 +1,6 @@
|
||||
{
|
||||
"plugins": ["transform-react-jsx", "transform-react-constant-elements"]
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "runtime": "classic" }],
|
||||
"transform-react-constant-elements"
|
||||
]
|
||||
}
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
"external-helpers",
|
||||
"syntax-jsx",
|
||||
"transform-react-inline-elements",
|
||||
"transform-react-jsx",
|
||||
["transform-react-jsx", { "runtime": "classic" }],
|
||||
"transform-modules-commonjs"
|
||||
]
|
||||
}
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
"external-helpers",
|
||||
"syntax-jsx",
|
||||
"transform-react-inline-elements",
|
||||
"transform-react-jsx",
|
||||
["transform-react-jsx", { "runtime": "classic" }],
|
||||
"transform-modules-commonjs"
|
||||
]
|
||||
}
|
||||
|
||||
@ -3,6 +3,6 @@
|
||||
"external-helpers",
|
||||
"syntax-jsx",
|
||||
"transform-react-inline-elements",
|
||||
"transform-react-jsx"
|
||||
["transform-react-jsx", { "runtime": "classic" }]
|
||||
]
|
||||
}
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -0,0 +1,5 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "pure": false, "runtime": "automatic" }]
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,3 @@
|
||||
var _reactJsxRuntime = require("react/jsx-runtime");
|
||||
|
||||
_reactJsxRuntime.jsx("div", {});
|
||||
@ -0,0 +1,5 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "pure": false, "runtime": "classic" }]
|
||||
]
|
||||
}
|
||||
@ -1,5 +0,0 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "pure": false }]
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,6 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "pure": false, "runtime": "automatic" }]
|
||||
],
|
||||
"throws": "pragma and pragmaFrag cannot be set when runtime is automatic"
|
||||
}
|
||||
@ -0,0 +1,5 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "pure": false, "runtime": "classic" }]
|
||||
]
|
||||
}
|
||||
@ -1,5 +0,0 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "pure": false }]
|
||||
]
|
||||
}
|
||||
@ -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."
|
||||
}
|
||||
@ -0,0 +1,5 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "pragma": "h", "pure": false, "runtime": "classic" }]
|
||||
]
|
||||
}
|
||||
@ -1,5 +0,0 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "pragma": "h", "pure": false }]
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,5 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "pure": true, "runtime": "automatic" }]
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,4 @@
|
||||
var _reactJsxRuntime = require("react/jsx-runtime");
|
||||
|
||||
/*#__PURE__*/
|
||||
_reactJsxRuntime.jsx("div", {});
|
||||
@ -0,0 +1,5 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "pure": true, "runtime": "classic" }]
|
||||
]
|
||||
}
|
||||
@ -1,5 +0,0 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "pure": true }]
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,6 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "pure": true, "runtime": "automatic" }]
|
||||
],
|
||||
"throws": "pragma and pragmaFrag cannot be set when runtime is automatic"
|
||||
}
|
||||
@ -0,0 +1,3 @@
|
||||
/* @jsx h */
|
||||
|
||||
<div />;
|
||||
@ -0,0 +1,5 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "pure": true, "runtime": "classic" }]
|
||||
]
|
||||
}
|
||||
@ -1,5 +0,0 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "pure": true }]
|
||||
]
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
<div />;
|
||||
@ -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."
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
<div />;
|
||||
@ -0,0 +1,5 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "pragma": "h", "pure": true, "runtime": "classic" }]
|
||||
]
|
||||
}
|
||||
@ -1,5 +0,0 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "pragma": "h", "pure": true }]
|
||||
]
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
<div />;
|
||||
@ -0,0 +1,5 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "runtime": "automatic" }]
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,4 @@
|
||||
var _reactJsxRuntime = require("react/jsx-runtime");
|
||||
|
||||
/*#__PURE__*/
|
||||
_reactJsxRuntime.jsx("div", {});
|
||||
@ -0,0 +1 @@
|
||||
<div />;
|
||||
@ -0,0 +1,5 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "runtime": "classic" }]
|
||||
]
|
||||
}
|
||||
@ -1,5 +0,0 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", {}]
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,3 @@
|
||||
/* @jsx h */
|
||||
|
||||
<div />;
|
||||
@ -0,0 +1,6 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "runtime": "automatic" }]
|
||||
],
|
||||
"throws": "pragma and pragmaFrag cannot be set when runtime is automatic"
|
||||
}
|
||||
@ -0,0 +1,3 @@
|
||||
/* @jsx h */
|
||||
|
||||
<div />;
|
||||
@ -0,0 +1,5 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "runtime": "classic" }]
|
||||
]
|
||||
}
|
||||
@ -1,5 +0,0 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", {}]
|
||||
]
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
<div />;
|
||||
@ -0,0 +1,6 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "pragma": "h", "runtime": "automatic" }]
|
||||
],
|
||||
"throws": "pragma and pragmaFrag cannot be set when runtime is automatic."
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
<div />;
|
||||
@ -0,0 +1,5 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "pragma": "h", "runtime": "classic" }]
|
||||
]
|
||||
}
|
||||
@ -1,5 +0,0 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "pragma": "h" }]
|
||||
]
|
||||
}
|
||||
@ -1,3 +1,3 @@
|
||||
{
|
||||
"plugins": [["transform-react-jsx", { "pragma": "foo.bar" }]]
|
||||
"plugins": [["transform-react-jsx", { "pragma": "foo.bar", "runtime": "classic" }]]
|
||||
}
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
{
|
||||
"plugins": [["transform-react-jsx", { "pragma": "dom" }]]
|
||||
"plugins": [["transform-react-jsx", { "pragma": "dom", "runtime": "classic" }]]
|
||||
}
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
"plugins": [
|
||||
"external-helpers",
|
||||
"syntax-jsx",
|
||||
"transform-react-jsx",
|
||||
["transform-react-jsx", { "runtime": "classic" }],
|
||||
"transform-arrow-functions"
|
||||
]
|
||||
}
|
||||
|
||||
@ -1,3 +1,6 @@
|
||||
{
|
||||
"plugins": ["transform-react-jsx", "transform-property-literals"]
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "runtime": "classic" }],
|
||||
"transform-property-literals"
|
||||
]
|
||||
}
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
"transform-react-jsx",
|
||||
{
|
||||
"pragma": "h",
|
||||
"runtime": "classic",
|
||||
"throwIfNamespace": false
|
||||
}
|
||||
]
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
"transform-react-jsx",
|
||||
{
|
||||
"pragma": "h",
|
||||
"runtime": "classic",
|
||||
"throwIfNamespace": true
|
||||
}
|
||||
]
|
||||
|
||||
@ -0,0 +1,5 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-react-jsx", { "runtime": "classic" }]
|
||||
]
|
||||
}
|
||||
@ -1,5 +0,0 @@
|
||||
{
|
||||
"plugins": [
|
||||
"transform-react-jsx"
|
||||
]
|
||||
}
|
||||
@ -1,3 +1,4 @@
|
||||
{
|
||||
"BABEL_8_BREAKING": true,
|
||||
"plugins": ["transform-react-jsx"]
|
||||
}
|
||||
@ -0,0 +1,5 @@
|
||||
var _reactJsxRuntime = require("react/jsx-runtime");
|
||||
|
||||
var x = /*#__PURE__*/_reactJsxRuntime.jsx("div", {
|
||||
children: /*#__PURE__*/_reactJsxRuntime.jsx("span", {})
|
||||
});
|
||||
@ -0,0 +1 @@
|
||||
var x = (<div><span /></div>);
|
||||
@ -0,0 +1,4 @@
|
||||
{
|
||||
"BABEL_8_BREAKING": false,
|
||||
"plugins": ["transform-react-jsx"]
|
||||
}
|
||||
@ -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"
|
||||
]
|
||||
}
|
||||
|
||||
@ -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"
|
||||
}));
|
||||
|
||||
@ -1,4 +1,6 @@
|
||||
{
|
||||
"presets": ["react"],
|
||||
"presets": [
|
||||
["react", { "runtime": "classic" }]
|
||||
],
|
||||
"plugins": ["transform-regenerator"]
|
||||
}
|
||||
|
||||
@ -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 (runtime === "classic") {
|
||||
pragma = pragma || "React.createElement";
|
||||
pragmaFrag = pragmaFrag || "React.Fragment";
|
||||
}
|
||||
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) {
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
{
|
||||
"presets": [["react", { "development": true }]],
|
||||
"presets": [["react", { "development": true, "runtime": "classic" }]],
|
||||
"os": ["win32"]
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
{
|
||||
"presets": [["react", { "development": true }]],
|
||||
"presets": [["react", { "development": true, "runtime": "classic" }]],
|
||||
"os": ["linux", "darwin"]
|
||||
}
|
||||
|
||||
4
packages/babel-preset-react/test/fixtures/preset-options/empty-options-babel-7/options.json
vendored
Normal file
4
packages/babel-preset-react/test/fixtures/preset-options/empty-options-babel-7/options.json
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"BABEL_8_BREAKING": false,
|
||||
"presets": [["react", {}]]
|
||||
}
|
||||
@ -1,3 +1,4 @@
|
||||
{
|
||||
"BABEL_8_BREAKING": true,
|
||||
"presets": [["react", {}]]
|
||||
}
|
||||
|
||||
@ -1,4 +1,6 @@
|
||||
var _reactJsxRuntime = require("react/jsx-runtime");
|
||||
|
||||
/*#__PURE__*/
|
||||
React.createElement(Foo, {
|
||||
_reactJsxRuntime.jsx(Foo, {
|
||||
bar: "baz"
|
||||
});
|
||||
|
||||
@ -1,3 +0,0 @@
|
||||
{
|
||||
"presets": ["react"]
|
||||
}
|
||||
@ -1,3 +1,5 @@
|
||||
{
|
||||
"presets": ["react"]
|
||||
"presets": [
|
||||
["react", { "runtime": "classic" }]
|
||||
]
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
{
|
||||
"presets": [
|
||||
["react", { "pragma": "__jsx" }]]
|
||||
["react", { "pragma": "__jsx", "runtime": "classic" }]]
|
||||
}
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
module.exports = () => ({
|
||||
plugins: [["@babel/plugin-transform-react-jsx", { pragma: "___EmotionJSX" }]],
|
||||
plugins: [["@babel/plugin-transform-react-jsx", { pragma: "___EmotionJSX", runtime: "classic" }]],
|
||||
});
|
||||
|
||||
@ -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
Loading…
x
Reference in New Issue
Block a user