Aller au contenu principal

7.27.0 est disponible : meilleure intégration à l'écosystème

· 3 min de lecture
Traduction Bêta Non Officielle

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.27.0 est disponible !

Cette version n'introduit pas de nouvelle fonctionnalité majeure, mais améliore l'alignement du comportement de Babel avec le JavaScript standard et les autres outils.

L'imprimante de code génère désormais par défaut la syntaxe correcte des import attributes, sans nécessiter d'activation manuelle d'option.

Nous avons également ajusté le comportement de l'option rewriteImportExtensions de @babel/preset-typescript pour corriger certaines divergences par rapport à --rewriteRelativeImportExtensions de TypeScript.

Enfin, nous avons mis à jour notre plugin de compatibilité estree dans @babel/parser pour générer des nœuds AccessorProperty pour les propriétés de classe accessor foo = "val", introduites par la proposition de décorateurs en étape 3. Notez que, pour des raisons de compatibilité ascendante, @babel/parser ne génère un AST compatible ESTree pour les fonctionnalités de classe que lorsque l'option classFeatures du plugin estree est activée.

Plusieurs changements pourraient bénéficier aux auteurs de plugins : vous pouvez consulter l'intégralité du journal des modifications sur GitHub.

Si vous ou votre entreprise souhaitez soutenir Babel et l'évolution de JavaScript sans savoir comment contribuer, vous pouvez nous faire un don via notre Open Collective ou, mieux encore, collaborer directement avec nous à l'implémentation de nouvelles propositions ECMAScript ! En tant que projet géré 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

Ajustements de rewriteImportExtensions (#17118)

Babel 7.26.0 a ajouté la prise en charge de import() dynamique lors de l'utilisation de l'option rewriteImportExtensions de @babel/preset-typescript, pour s'aligner sur la nouvelle option rewriteRelativeImportExtensions de TypeScript.

Cependant, nous avons constaté une divergence dans le traitement des chemins non relatifs : Babel réécrivait import("/foo/bar/baz.ts") en import("/foo/bar/baz.js"), tandis que TypeScript le conservait inchangé. L'objectif de Babel étant de refléter l'option TypeScript quand possible, nous considérons cette différence comme un bogue que nous corrigeons dans Babel 7.27.0.

Génération des import attributes par défaut (#16977)

Babel avait initialement implémenté les import attributes il y a plusieurs années, lorsque la proposition s'appelait encore "module attributes" et utilisait une syntaxe différente :

import data from "./data.json" with type: "json";

Lorsque nous avons livré des import attributes conformes aux standards, nous avons conservé le comportement existant du générateur. Ainsi, lors de la génération de l'AST suivant :

ImportDeclaration {
specifiers: [],
source: StringLiteral("./data.json"),
attributes: [
ImportAttribute { key: Identifier("type"), value: StringLiteral("json") }
]
}

nous produisions import "./data.json" with type: "json" au lieu de import "./data.json" with { type: "json" }.

@babel/generator générera désormais import "./data.json" with { type: "json" } pour correspondre à la syntaxe JavaScript standard. Il conservera l'ancienne syntaxe dans les cas suivants :

  • L'option importAttributesKeyword est définie à "with-legacy"

  • L'AST a été généré par l'analyse de l'ancienne syntaxe, définissant une propriété .extra.deprecatedWithLegacySyntax: true sur le nœud ImportDeclaration.