@vitejs/plugin-react
Advanced tools
Comparing version 1.3.1 to 1.3.2
@@ -295,7 +295,14 @@ var __create = Object.create; | ||
} | ||
const reactJsxRE = new RegExp("\\b" + reactAlias + "\\.(createElement|Fragment)\\b", "g"); | ||
let hasCompiledJsx = false; | ||
code = code.replace(reactJsxRE, (_, prop) => { | ||
const fragmentPattern = `\\b${reactAlias}\\.Fragment\\b`; | ||
const createElementPattern = `\\b${reactAlias}\\.createElement\\(\\s*([A-Z"'][\\w$.]*["']?)`; | ||
code = code.replace(new RegExp(fragmentPattern, "g"), () => { | ||
hasCompiledJsx = true; | ||
return "React." + prop; | ||
return "React.Fragment"; | ||
}).replace(new RegExp(createElementPattern, "g"), (original, component) => { | ||
if (/^[a-z][\w$]*$/.test(component)) { | ||
return original; | ||
} | ||
hasCompiledJsx = true; | ||
return "React.createElement(" + (component === "Fragment" ? "React.Fragment" : component); | ||
}); | ||
@@ -305,3 +312,2 @@ if (!hasCompiledJsx) { | ||
} | ||
code = code.replace(/createElement\(Fragment,/g, "createElement(React.Fragment,"); | ||
babelRestoreJSX || (babelRestoreJSX = Promise.resolve().then(() => (init_babel_restore_jsx(), babel_restore_jsx_exports))); | ||
@@ -308,0 +314,0 @@ const result = await babel2.transformAsync(code, { |
{ | ||
"name": "@vitejs/plugin-react", | ||
"version": "1.3.1", | ||
"version": "1.3.2", | ||
"license": "MIT", | ||
@@ -36,3 +36,3 @@ "author": "Evan You", | ||
"dependencies": { | ||
"@babel/core": "^7.17.9", | ||
"@babel/core": "^7.17.10", | ||
"@babel/plugin-transform-react-jsx": "^7.17.3", | ||
@@ -42,6 +42,6 @@ "@babel/plugin-transform-react-jsx-development": "^7.16.7", | ||
"@babel/plugin-transform-react-jsx-source": "^7.16.7", | ||
"@rollup/pluginutils": "^4.2.0", | ||
"react-refresh": "^0.12.0", | ||
"@rollup/pluginutils": "^4.2.1", | ||
"react-refresh": "^0.13.0", | ||
"resolve": "^1.22.0" | ||
} | ||
} |
@@ -23,2 +23,3 @@ import type * as babelCore from '@babel/core' | ||
const [reactAlias, isCommonJS] = parseReactAlias(code) | ||
if (!reactAlias) { | ||
@@ -28,14 +29,29 @@ return jsxNotFound | ||
const reactJsxRE = new RegExp( | ||
'\\b' + reactAlias + '\\.(createElement|Fragment)\\b', | ||
'g' | ||
) | ||
let hasCompiledJsx = false | ||
code = code.replace(reactJsxRE, (_, prop) => { | ||
hasCompiledJsx = true | ||
// Replace with "React" so JSX can be reverse compiled. | ||
return 'React.' + prop | ||
}) | ||
const fragmentPattern = `\\b${reactAlias}\\.Fragment\\b` | ||
const createElementPattern = `\\b${reactAlias}\\.createElement\\(\\s*([A-Z"'][\\w$.]*["']?)` | ||
// Replace the alias with "React" so JSX can be reverse compiled. | ||
code = code | ||
.replace(new RegExp(fragmentPattern, 'g'), () => { | ||
hasCompiledJsx = true | ||
return 'React.Fragment' | ||
}) | ||
.replace(new RegExp(createElementPattern, 'g'), (original, component) => { | ||
if (/^[a-z][\w$]*$/.test(component)) { | ||
// Take care not to replace the alias for `createElement` calls whose | ||
// component is a lowercased variable, since the `restoreJSX` Babel | ||
// plugin leaves them untouched. | ||
return original | ||
} | ||
hasCompiledJsx = true | ||
return ( | ||
'React.createElement(' + | ||
// Assume `Fragment` is equivalent to `React.Fragment` so modules | ||
// that use `import {Fragment} from 'react'` are reverse compiled. | ||
(component === 'Fragment' ? 'React.Fragment' : component) | ||
) | ||
}) | ||
if (!hasCompiledJsx) { | ||
@@ -45,8 +61,2 @@ return jsxNotFound | ||
// Support modules that use `import {Fragment} from 'react'` | ||
code = code.replace( | ||
/createElement\(Fragment,/g, | ||
'createElement(React.Fragment,' | ||
) | ||
babelRestoreJSX ||= import('./babel-restore-jsx') | ||
@@ -53,0 +63,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
59218
13
1509
+ Addedreact-refresh@0.13.0(transitive)
- Removedreact-refresh@0.12.0(transitive)
Updated@babel/core@^7.17.10
Updated@rollup/pluginutils@^4.2.1
Updatedreact-refresh@^0.13.0