Preguntas frecuentes
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
¿Por qué la salida de for...of es tan verbosa y fea?
Para cumplir con la especificación, el método return del iterador debe invocarse ante errores. Una alternativa es usar las asunciones introducidas en Babel 7.13, como ArrayLikeIsIterable e IterableIsArray, pero ten en cuenta que existen muchas consideraciones si usas asunciones y que estás eligiendo deliberadamente no cumplir con la especificación.
Consulta babel/rfcs#5, google/traceur-compiler#1773 y babel/babel#838 para más información.
¿Por qué se reasignan this y arguments en las funciones flecha?
Las funciones flecha no son sinónimas de funciones normales. arguments y this dentro de funciones flecha hacen referencia a su función externa, por ejemplo:
const user = {
firstName: "Sebastian",
lastName: "McKenzie",
getFullName: () => {
// whoops! `this` doesn't actually reference `user` here
return this.firstName + " " + this.lastName;
},
// use the method shorthand in objects
getFullName2() {
return this.firstName + " " + this.lastName;
},
};
Consulta babel/babel#842, babel/babel#814, babel/babel#733 y babel/babel#730 para más información.
¿Por qué this se reasigna a undefined?
Babel asume que todo código de entrada es un módulo ES2015. Los módulos ES2015 son implícitamente modo estricto, lo que significa que this en el nivel superior no es window en el navegador ni exports en Node.js.
Si no deseas este comportamiento, tienes la opción de deshabilitar strict en el plugin-transform-modules-commonjs.
IMPORTANTE: Si haces esto, estás desviándote deliberadamente de la especificación y esto podría causar problemas de interoperabilidad futuros.
¡Ayuda! Solo quiero usar Babel como en la versión 5.x. ¡Todo es demasiado complicado ahora!
¡Te entendemos! Babel 6 requiere un mínimo de configuración para funcionar. Creemos que esto es lo mejor y hemos añadido presets para facilitar esta transición.
Migrando de Babel 5.x a Babel 6
El núcleo de Babel 6 son los plugins. Los plugins que necesitas dependen completamente de tu configuración específica, pero añade el siguiente archivo de configuración para obtener las mismas transformaciones que tenía Babel 5:
{
"presets": ["env", "react", "stage-2"]
}
- npm
- Yarn
- pnpm
- Bun
npm install babel-preset-env babel-preset-react babel-preset-stage-2 --save-dev
yarn add babel-preset-env babel-preset-react babel-preset-stage-2 --dev
pnpm add babel-preset-env babel-preset-react babel-preset-stage-2 --save-dev
bun add babel-preset-env babel-preset-react babel-preset-stage-2 --dev
También consulta nuestra publicación de blog Configurando Babel 6.
¿Dónde está toda la documentación?
Babel 6 removes a lot of the options in favor of plugins so a lot of the docs are no longer applicable.
For every removed option there should be a plugin for it. It's possible we may have missed something, if you think this is the case, please open an issue!
Babel es un proyecto de código abierto y agradecemos cualquier contribución. Por favor ayuda con la documentación si puedes enviando un pull request al repositorio babel.github.io.
¿Cómo compilo Babel desde el código fuente?
Consulta las instrucciones de compilación.
¿Cómo contribuyo a Babel?
Consulta contributing.
¿Por qué recibo un Error de Sintaxis/Token Inesperado?
Lo más probable es que no hayas incluido un plugin o preset que admita esa funcionalidad. (También es posible que sea un error en el analizador sintáctico, o que realmente sea un token inesperado).
¿Por qué no se actualiza cierto paquete babel-x?
Actualmente utilizamos el sistema de versionado fijo de Lerna.
Tenemos una versión global para todos los paquetes. Al realizar una publicación, solo se actualizan los paquetes que
realmente tuvieron cambios (realizamos un git diff en esa carpeta).
Si solo actualizamos babel-plugin-transform-exponentiation-operator a 6.x.x, actualmente no publicamos una nueva versión para todos los paquetes ya que las otras dependencias usan ^.
Por ejemplo, el lanzamiento de Babel v6.6.0 no significa que todos los paquetes sean ahora 6.6.0.
Para asegurarte de usar las versiones más recientes de los paquetes, puede que necesites eliminar node_modules y ejecutar npm install nuevamente.