Preajustes
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Los presets de Babel pueden funcionar como conjuntos compartibles de plugins de Babel y/u opciones de configuración options.
Presets oficiales
Hemos compilado algunos presets para entornos comunes:
-
@babel/preset-env para compilar sintaxis ES2015+
-
@babel/preset-react para React
-
@babel/preset-flow para Flow
Otras integraciones
Si no usas Babel directamente, el framework que utilizas podría tener su propia configuración para usar o extender. ¡Muchos otros presets mantenidos por la comunidad están disponibles en npm!
Next.js | Nuxt.js | Parcel | Jest | Gatsby
Usar un preset
En una configuración de Babel, si el preset está en npm, puedes pasar el nombre del preset y Babel verificará que ya está instalado en node_modules. Esto se añade a la opción de configuración presets, que recibe un array.
{
"presets": ["babel-preset-myPreset", "@babel/preset-env"]
}
Alternativamente, también puedes especificar una ruta relativa o absoluta a tus presets.
{
"presets": ["./myProject/myPreset"]
}
Consulta la normalización de nombres para más detalles sobre cómo configurar la ruta de un plugin o preset.
Stage-X (Presets experimentales)
A partir de Babel 7, decidimos marcar como obsoletos los presets Stage-X y dejar de publicarlos. Debido a que estas propuestas están sujetas a cambios inherentes, parece mejor pedir a los usuarios que especifiquen propuestas individuales como plugins versus un preset general que de todas formas necesitarías verificar. Consulta nuestro blog para más contexto.
Cualquier transformación en los presets stage-x son cambios en el lenguaje que aún no han sido aprobados para formar parte de una versión de JavaScript (como ES6/ES2015).
El TC39 categoriza las propuestas en las siguientes etapas:
-
Stage 0 - Strawman: solo una idea, posible plugin de Babel.
-
Stage 1 - Propuesta: vale la pena trabajar en esto.
-
Stage 2 - Borrador: especificación inicial.
-
Stage 3 - Candidato: especificación completa e implementaciones iniciales en navegadores.
-
Stage 4 - Finalizado: se agregará en la próxima versión anual.
Para más información, asegúrate de consultar las propuestas actuales de TC39 y su documento de proceso.
El proceso de etapas de TC39 también se explica en detalle en varios artículos de Yehuda Katz (@wycatz) en thefeedbackloop.xyz: Etapa 0 y 1, Etapa 2, Etapa 3
Creación de un Preset
Para crear tu propio preset (ya sea para uso local o para publicar en npm), necesitas exportar un objeto de configuración.
Podría simplemente devolver un array de plugins.
module.exports = function() {
return {
plugins: ["pluginA", "pluginB", "pluginC"],
};
};
Los presets pueden contener otros presets y plugins con opciones.
module.exports = () => ({
presets: [require("@babel/preset-env")],
plugins: [
[require("@babel/plugin-transform-class-properties"), { loose: true }],
require("@babel/plugin-transform-object-rest-spread"),
],
});
Para más información, consulta la sección sobre presets en el manual de Babel.
Orden de los Presets
El orden de los presets es inverso (del último al primero).
{
"presets": ["a", "b", "c"]
}
Se ejecutarán en el siguiente orden: c, b, luego a.
Esto se implementó principalmente para garantizar compatibilidad con versiones anteriores, ya que la mayoría de usuarios listaba "es2015" antes de "stage-0".
Opciones de Preset
Tanto plugins como presets pueden tener opciones especificadas envolviendo el nombre y un objeto de opciones en un array dentro de tu configuración.
Para especificar sin opciones, todas estas formas son equivalentes:
{
"presets": [
"presetA", // bare string
["presetA"], // wrapped in array
["presetA", {}] // 2nd argument is an empty options object
]
}
Para especificar una opción, pasa un objeto con las claves como nombres de opción.
{
"presets": [
[
"@babel/preset-env",
{
"loose": true,
"modules": false
}
]
]
}