Lanzamiento 7.28.0: `babel.config.ts`, gestión explícita de recursos y propuesta de enlace descartable
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
¡Babel 7.28.0 ya está disponible!
Esta versión incluye soporte para babel.config.ts y babel.config.mts, la característica ES2026 de Gestión Explícita de Recursos, la propuesta de enlace descartable y la opción sourceType: "commonjs".
Puedes leer el registro completo de cambios en GitHub. Si ya estás usando la beta de Babel 8, todas las nuevas características de la 7.28.0 están incluidas en v8.0.0-beta.1.
Si tú o tu empresa quieren apoyar a Babel y la evolución de JavaScript pero no saben cómo, pueden donar a través de nuestro Open Collective y, mejor aún, ¡trabajar directamente con nosotros implementando nuevas propuestas de ECMAScript! Como proyecto impulsado por voluntarios, dependemos del apoyo de la comunidad para financiar nuestros esfuerzos en soportar la amplia gama de usuarios de JavaScript. Contáctenos en team@babeljs.io si desean conversar más.
Destacados
Soporte nativo para babel.config.ts y babel.config.mts (#17392)
Babel ahora soporta nativamente babel.config.ts y babel.config.mts. Recomendamos usar Node.js 24 para obtener los mejores resultados.
Si estás usando Babel 8.0.0-beta.1, puedes importar tipados directamente desde @babel/core y usarlos en tu configuración de Babel:
// Requires Babel 8.0.0-beta.1 or above
import type { ConfigAPI, InputOptions } from "@babel/core";
export default function babelConfig(api: ConfigAPI): InputOptions {
return {
assumptions: {
noDocumentAll: true
},
presets: [
[
"@babel/preset-env",
{
targets: {
node: "current",
},
},
],
"@babel/preset-typescript",
],
};
}
Gestión explícita de recursos habilitada por defecto (#17346, #17355)
{
using handlerSync = openSync();
await using handlerAsync = await openAsync();
// handlerSync and handlerAsync will be disposed when the block exits
}
Gestión explícita de recursos, aprobada condicionalmente para la Etapa 4 durante la reunión de mayo 2025 de TC39, ahora está habilitada por defecto en @babel/preset-env y @babel/parser.
Si estabas usando el plugin @babel/plugin-proposal-explicit-resource-management con @babel/preset-env, ahora puedes eliminar el plugin de tu configuración.
Si usabas el plugin de parser explicitResourceManagement, puedes eliminarlo de tu configuración.
Enlace descartable (#17276)
Babel soporta transformar la propuesta de enlace descartable. Ahora puedes usar el enlace void para indicar una variable o parámetro no utilizado:
{
using void = new AcquireLock(mutex);
// The mutex lock will be automatically disposed when the block exits
}
// A customized JSON serializer with bigint support
// The first parameter of the replacer is unused
JSON.stringify(input, (void, value) => {
if (typeof value === "bigint") {
return value.toString();
} else {
return value.toJSON();
}
});
// Get a clone of the input object without property `z`
const { z: void, ...obj } = { x: 1, y: 2, z: 3 };
obj; // { x: 1, y: 2 }
Puedes habilitarlo añadiendo el plugin @babel/plugin-proposal-discard-binding a tu configuración de Babel.
export default {
plugins: [
["@babel/plugin-proposal-discard-binding", { syntaxType: "void" }]
]
}
Ten en cuenta que la propuesta podría cambiar para usar una sintaxis diferente: por ello, la opción syntaxType es obligatoria y actualmente su único valor válido es "void".
sourceType: "commonjs" (#17390)
El modo "commonjs" indica que el código debe ejecutarse en un entorno CommonJS como Node.js. Es similar al modo "script", pero permite declaraciones return, new.target, y using/await using en el nivel superior.
export default {
// Specify commonjs sourceType for all `*.cjs` sources
overrides: [
{
test: "*.cjs",
sourceType: "commonjs"
}
]
}
Debes usar sourceType: "commonjs" al trabajar con sintaxis específica de CommonJS, y sourceType: "script" cuando escribas etiquetas <script> que no sean módulos.