@babel/preset-react
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Este preset siempre incluye los siguientes plugins:
Y con la opción development:
El runtime clásico añade:
El runtime automático (desde v7.9.0) añade la funcionalidad de estos plugins automáticamente cuando se habilita la opción development. Si tienes el runtime automático habilitado, añadir @babel/plugin-transform-react-jsx-self o @babel/plugin-transform-react-jsx-source producirá un error.
Nota: El soporte para sintaxis Flow ya no está habilitado en v7. Para ello, necesitarás añadir el preset de Flow.
Instalación
También puedes consultar la página de inicio de React
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev @babel/preset-react
yarn add --dev @babel/preset-react
pnpm add --save-dev @babel/preset-react
bun add --dev @babel/preset-react
Uso
Mediante un archivo de configuración (Recomendado)
Sin opciones:
{
"presets": ["@babel/preset-react"]
}
Con opciones:
{
"presets": [
[
"@babel/preset-react",
{
"pragma": "dom", // default pragma is React.createElement (only in classic runtime)
"pragmaFrag": "DomFrag", // default is React.Fragment (only in classic runtime)
"throwIfNamespace": false, // defaults to true
"runtime": "classic" // defaults to classic
// "importSource": "custom-jsx-library" // defaults to react (only in automatic runtime)
}
]
]
}
Mediante la CLI
babel --presets @babel/preset-react script.js
Mediante la API de Node
require("@babel/core").transformSync("code", {
presets: ["@babel/preset-react"],
});
Opciones
Ambos Runtimes
runtime
classic | automatic, valor predeterminado: classic
Añadido en: v7.9.0
Nota: El runtime predeterminado cambiará a
automaticen Babel 8.
Determina qué runtime usar.
automatic importa automáticamente las funciones a las que se transpila JSX. classic no importa nada automáticamente.
development
boolean, valor predeterminado: false.
Activa o desactiva comportamientos específicos de desarrollo, como añadir __source y __self.
Es útil cuando se combina con la configuración de la opción env o archivos de configuración js.
throwIfNamespace
boolean, valor predeterminado: true.
Activa o desactiva si se lanza un error cuando se usa un nombre de etiqueta con espacio de nombres XML. Por ejemplo:
Aunque la especificación JSX lo permite, está desactivado por defecto ya que el JSX de React actualmente no lo soporta.
pure
boolean, valor predeterminado: true.
Habilita @babel/plugin-transform-react-pure-annotations. Marcará las llamadas a métodos de React de nivel superior como puras para tree shaking.
Runtime Automático de React
importSource
string, valor predeterminado: react.
Añadido en: v7.9.0
Reemplaza la fuente de importación al importar funciones.
Runtime Clásico de React
pragma
string, valor predeterminado: React.createElement.
Reemplaza la función utilizada al compilar expresiones JSX. Debe ser un nombre calificado (ej. React.createElement) o un identificador (ej. createElement).
pragmaFrag
string, valor predeterminado: React.Fragment.
Reemplaza el componente utilizado al compilar fragmentos de JSX. Debe ser un nombre de etiqueta JSX válido.
useBuiltIns
boolean, valor predeterminado: false.
Esta opción será eliminada en Babel 8. Establece useBuiltIns en true si estás orientado a navegadores modernos.
Utilizará el built-in nativo en lugar de intentar aplicar un polyfill al comportamiento de cualquier plugin que lo requiera.
useSpread
boolean, valor predeterminado: false.
Añadido en: v7.7.0
Esta opción será eliminada en Babel 8. Establece useSpread en true si estás orientado a navegadores modernos.
Al esparcir props, utiliza un objeto en línea con elementos de spread directamente en lugar del helper extend de Babel o Object.assign.
babel.config.js
module.exports = {
presets: [
[
"@babel/preset-react",
{
development: process.env.BABEL_ENV === "development",
},
],
],
};
babel.config.json
Nota: la opción
envprobablemente quedará obsoleta pronto
{
"presets": ["@babel/preset-react"],
"env": {
"development": {
"presets": [["@babel/preset-react", { "development": true }]]
}
}
}
Puedes leer más sobre cómo configurar opciones de presets aquí