7.28.0 Publiée : `babel.config.ts`, gestion explicite des ressources et proposition de liaison de rejet
Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →
Babel 7.28.0 est disponible !
Cette version inclut la prise en charge de babel.config.ts et babel.config.mts, la fonctionnalité ES2026 de gestion explicite des ressources, la proposition de liaison de rejet et l'option sourceType: "commonjs".
Vous pouvez consulter l'intégralité du journal des modifications sur GitHub. Si vous utilisez déjà la bêta de Babel 8, toutes les nouvelles fonctionnalités de la 7.28.0 sont incluses dans la v8.0.0-beta.1.
Si vous ou votre entreprise souhaitez soutenir Babel et l'évolution de JavaScript mais ne savez pas comment, vous pouvez nous soutenir via notre Open Collective et, mieux encore, collaborer directement avec nous à l'implémentation de nouvelles propositions ECMAScript ! En tant que projet porté par des bénévoles, nous dépendons du soutien communautaire pour financer nos efforts visant à accompagner la diversité des utilisateurs JavaScript. Contactez-nous à team@babeljs.io pour en discuter !
Principales fonctionnalités
Prise en charge native de babel.config.ts et babel.config.mts (#17392)
Babel prend désormais en charge nativement babel.config.ts et babel.config.mts. Nous recommandons d'utiliser Node.js 24 pour des résultats optimaux.
Si vous utilisez Babel 8.0.0-beta.1, vous pouvez importer les typages directement depuis @babel/core et les utiliser dans votre configuration 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",
],
};
}
Gestion explicite des ressources activée par défaut (#17346, #17355)
{
using handlerSync = openSync();
await using handlerAsync = await openAsync();
// handlerSync and handlerAsync will be disposed when the block exits
}
La gestion explicite des ressources, approuvée conditionnellement pour le stade 4 lors de la réunion TC39 de mai 2025, est désormais activée par défaut dans @babel/preset-env et @babel/parser.
Si vous utilisiez le plugin @babel/plugin-proposal-explicit-resource-management avec @babel/preset-env, vous pouvez désormais le retirer de votre configuration.
Si vous utilisiez le plugin d'analyse syntaxique explicitResourceManagement, vous pouvez le supprimer de votre configuration.
Liaison de rejet (#17276)
Babel prend en charge la transformation de la proposition de liaison de rejet. Vous pouvez désormais utiliser la liaison void pour indiquer une variable ou paramètre inutilisé :
{
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 }
Activez-la en ajoutant le plugin @babel/plugin-proposal-discard-binding à votre configuration Babel.
export default {
plugins: [
["@babel/plugin-proposal-discard-binding", { syntaxType: "void" }]
]
}
Notez que la proposition pourrait évoluer vers une syntaxe différente : l'option syntaxType est donc obligatoire et sa seule valeur valide actuelle est "void".
sourceType: "commonjs" (#17390)
Le mode "commonjs" indique que le code doit s'exécuter dans un environnement CommonJS comme Node.js. Similaire au mode "script", il autorise les déclarations return, new.target et using/await using au niveau supérieur.
export default {
// Specify commonjs sourceType for all `*.cjs` sources
overrides: [
{
test: "*.cjs",
sourceType: "commonjs"
}
]
}
Vous devriez utiliser sourceType: "commonjs" lorsque vous utilisez une syntaxe spécifique à CommonJS, et sourceType: "script" lorsque vous écrivez des balises <script> non modulaires.