7.24.0 Rilasciato: Aggiornamenti ai decoratori e importazione moduli JSON
Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →
Babel 7.24.0 è disponibile!
Abbiamo aggiornato la nostra implementazione dei Decoratori per allinearla all'ultima versione della proposta e migliorato la trasformazione di campi e metodi privati nelle classi. Abbiamo inoltre aggiunto il supporto per l'importazione di moduli JSON nei browser e in Node.js, una proposta di Stage 3 dipendente dagli Import Attributes.
Puoi consultare l'intero changelog su GitHub.
Se tu o la tua azienda volete supportare Babel e l'evoluzione di JavaScript, ma non sapete come, potete donare sul nostro Open Collective e, ancora meglio, collaborare direttamente con noi all'implementazione di nuove proposte ECMAScript! Essendo un progetto gestito da volontari, dipendiamo dal supporto della comunità per finanziare i nostri sforzi nel supportare la vasta gamma di utenti JavaScript. Contattaci a team@babeljs.io per discutere insieme!
Novità principali
Aggiornamenti ai Decoratori (#16242)
Le proposte di Stage 3 per i decoratori hanno ricevuto numerosi aggiornamenti minori negli ultimi anni e purtroppo le implementazioni nei vari strumenti supportano versioni leggermente diverse.
Abbiamo aggiornato la nostra implementazione per allinearla all'ultima versione della proposta. Questa versione è già implementata in TypeScript e attualmente in fase di implementazione nativa nei browser. La principale differenza rispetto alla versione 2023-05 precedentemente implementata riguarda l'ordine di esecuzione degli initializer registrati tramite il metodo context.addInitializer.
Puoi abilitare questa versione della proposta impostando l'opzione "version": "2023-11" in @babel/plugin-proposal-decorators:
{
"plugins": [
["@babel/plugin-proposal-decorators", {
"version": "2023-11"
}]
]
}
Puoi inoltre testare la nuova proposta di decoratori nel REPL online di Babel.
Importazione moduli JSON (#15829, #15870)
Babel 7.24.0 aggiunge finalmente il supporto alla proposta dei moduli JSON, in Stage 3 dal 2021. Questa proposta consente di importare direttamente file JSON utilizzando dichiarazioni import insieme a un attributo type: "json":
import myConfig from "./config.json" with { type: "json" };
Babel trasformerà questi import nel metodo appropriato per caricare file JSON nelle piattaforme target, in base all'opzione targets:
-
Browser moderni
const myConfig = await fetch(import.meta.resolve("./config.json"))
.then(r => r.json()); -
Browser meno recenti senza supporto per
import.meta -
Node.js (ESM)
-
Node.js (CommonJS)
const myConfig = JSON.parse(
require("fs").readFileSync(require.resolve("./config.json"))
); -
Varie combinazioni delle precedenti
Puoi abilitarlo utilizzando il plugin @babel/plugin-proposal-json-modules:
{
"targets": ["chrome 90", "firefox 90", "node 20.6"],
"plugins": ["@babel/plugin-proposal-json-modules"]
}
Un parser Flow basato su Hermes (#16284)
Babel ha implementato il supporto per l'analisi e la trasformazione delle annotazioni di tipo Flow molto tempo fa, ma nell'ultimo anno non abbiamo fatto un buon lavoro nel tenere il passo con le nuove funzionalità del linguaggio Flow.
Nel frattempo, il team di Hermes ha lavorato a un plugin Babel, babel-plugin-syntax-hermes-parser, che ti consente di utilizzare direttamente Hermes, il nuovo motore JavaScript di React Native, per analizzare codice Flow. Supporta tutte le ultime funzionalità di Flow, come i cast di tipo as e i tipi condizionali.
Ora puoi abilitare più facilmente questo parser utilizzando l'opzione experimental_useHermesParser di @babel/preset-flow:
{
"presets": [
["@babel/preset-flow", {
"experimental_useHermesParser": true
}]
]
}
Stiamo valutando la possibilità di rimuovere il supporto per Flow da @babel/parser in una futura release, a favore di questo parser basato su Hermes. Per favore provatelo, segnalate eventuali bug di analisi nel bug tracker di Hermes e raccontateci la vostra esperienza!
Il parser Hermes non supporta ancora trasformazioni basate su commenti nel file