¿Qué es Babel?
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Babel es un compilador de JavaScript
Babel es un conjunto de herramientas principalmente utilizado para convertir código ECMAScript 2015+ en una versión de JavaScript compatible con navegadores y entornos actuales y antiguos. Estas son las principales funcionalidades que Babel ofrece:
-
Transformar sintaxis
-
Implementar polyfills para características faltantes en tu entorno objetivo (mediate polyfills de terceros como core-js)
-
Transformaciones de código fuente (codemods)
-
¡Y mucho más! (consulta estos vídeos para inspirarte)
// Babel Input: ES2015 arrow function
[1, 2, 3].map(n => n + 1);
// Babel Output: ES5 equivalent
[1, 2, 3].map(function(n) {
return n + 1;
});
Para un excelente tutorial sobre compiladores, visita the-super-tiny-compiler, que también explica cómo funciona Babel a alto nivel.
ES2015 y versiones posteriores
Babel soporta la última versión de JavaScript mediante transformadores de sintaxis.
Estos plugins te permiten usar nueva sintaxis ahora mismo sin esperar soporte de los navegadores. Consulta nuestra guía de uso para comenzar.
JSX y React
¡Babel puede convertir sintaxis JSX! Consulta nuestro preset para React para empezar. Úsalo junto con el paquete babel-sublime para llevar el resaltado de sintaxis a otro nivel.
Puedes instalar este preset con
- 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
y añadir @babel/preset-react a tu configuración de Babel.
export default function DiceRoll(){
const getRandomNumber = () => {
return Math.ceil(Math.random() * 6);
};
const [num, setNum] = useState(getRandomNumber());
const handleClick = () => {
const newNum = getRandomNumber();
setNum(newNum);
};
return (
<div>
Your dice roll: {num}.
<button onClick={handleClick}>Click to get a new number</button>
</div>
);
};
Más información sobre JSX
Anotaciones de tipos (Flow y TypeScript)
¡Babel puede eliminar anotaciones de tipos! Consulta nuestro preset para Flow o preset para TypeScript para comenzar. Ten en cuenta que Babel no realiza comprobación de tipos; deberás instalar y usar Flow o TypeScript para verificar los tipos.
Puedes instalar el preset para Flow con
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev @babel/preset-flow
yarn add --dev @babel/preset-flow
pnpm add --save-dev @babel/preset-flow
bun add --dev @babel/preset-flow
// @flow
function square(n: number): number {
return n * n;
}
o el preset para TypeScript con
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev @babel/preset-typescript
yarn add --dev @babel/preset-typescript
pnpm add --save-dev @babel/preset-typescript
bun add --dev @babel/preset-typescript
function Greeter(greeting: string) {
this.greeting = greeting;
}
Más información sobre Flow y TypeScript!
Extensible mediante plugins
Babel está construido con plugins. Crea tu propia pipeline de transformación usando plugins existentes o escribe los tuyos. Usa fácilmente conjuntos de plugins mediante presets. Más información →
Crea un plugin al instante con astexplorer.net o usa generator-babel-plugin para generar una plantilla de plugin.
// A plugin is just a function
export default function({ types: t }) {
return {
visitor: {
Identifier(path) {
let name = path.node.name; // reverse the name: JavaScript -> tpircSavaJ
path.node.name = [...name]
.reverse()
.join("");
},
},
};
}
Depurable
Soporte para source maps que permite depurar tu código compilado fácilmente.
Compatible con especificaciones
Babel intenta mantenerse fiel al estándar ECMAScript tanto como sea razonablemente posible. También ofrece opciones específicas para priorizar el cumplimiento de especificaciones, aunque con posibles compromisos en rendimiento.
Compacto
Babel intenta generar la mínima cantidad de código posible sin depender de runtimes voluminosos.
Esto puede ser difícil en algunos casos, por lo que existen opciones de "suposiciones" que intercambian cumplimiento de especificaciones por legibilidad, tamaño de archivo y velocidad.