Risposte:
I preset sul palco di Babel corrispondono al processo TC39 e ai diversi stati di ciascuna proposta per un potenziale cambio di lingua. Includono implementazioni e polyfill per tutte le modifiche proposte in quella fase.
Tutto ciò che è attualmente Stage-0
è Strawman, non ES6. È il futuro Javascript e non è assolutamente certo che riuscirà mai a entrare in alcuna specifica ECMAScript ufficiale.
Per favore, non limitarti astage-0
farlo in modo che funzioni senza capire le conseguenze che ciò avrà.
Il Preset Babel che contiene solo le funzionalità ES6 è preset-es2015
stage-0
mai del tutto al sicuro dal cambiamento o persino dall'ammortamento totale (vedi proposta del costruttore di chiamata che è stata ritirata dopo la Fase 1). Ma lo stesso si può dire di qualsiasi Stage diverso dallo Stage 4 (cioè Finished).
preset-es2015
con babel-preset-node6
questi giorni, se in esecuzione Nodo 6 o superiore.
babel-preset-env
che può colpire qualsiasi ambiente!
babel-preset-env
INSTEAD OF babel-preset-es2015
. babel-preset-es2015
è quasi obsoleto
Come per lo più elaborato da altre risposte. La fase 4 è la più stabile e la fase 0, la più pericolosa. Ecco un po 'di una ripartizione ad alto livello per le 5 fasi dalle risposte precedenti e dalla documentazione. Sto aggiungendo questo perché quando sono arrivato a questo mi aspettavo una suddivisione di più alto livello di ciò che ogni fase è:
Pronto per l'inclusione nello standard ECMAScript, ha superato i test e farà parte della prossima revisione
Include un testo completo delle specifiche e include plug-in che sono stati per lo più testati e forniti con feedback. La soluzione è completa e tutte le ulteriori modifiche si basano sull'esperienza di implementazione.
Ulteriore supporto per i plugin completato il più possibile. I requisiti per questi sono soddisfatti principalmente con solo cambiamenti incrementali sulla strada. Semantica e API dovrebbero essere complete. Molto probabilmente diventerà parte delle specifiche.
Ogni livello è inclusivo mentre 4 include 3 include 2 e così via ... Spero che questa somma aiuti qualcuno in futuro.
Le fasi rappresentano le fasi definite dal processo TC39 che trasforma le funzioni da idee folli ma utili in standard accettati, come ES6. Il processo richiede un po 'di tempo, poiché ogni caso d'angolo deve essere discusso, pensato, testato, riempito di poligoni, discusso un po' di più, ecc. Cioè, è un corpo standard. L'obiettivo è che dire "ES6" avrà un significato completo e completo, proprio come dire "ES5".
In pratica, i requisiti del tuo progetto possono variare dal restare fedeli a quelli provati e fedeli al giocare con caratteristiche linguistiche davvero così convenienti, anche se nebulose. Probabilmente vuoi iniziare con questi link:
Panoramica del processo TC39 : questo include un elegante grafico su cosa significano le fasi e su come le funzionalità progrediscono da una fase all'altra. Di seguito una panoramica di TC39.
Proposte attive : una rapida panoramica della fase in cui si trovano determinate proposte. Include anche collegamenti alle proposte Finite, Inattive e Fase 0. Oggi, aprile 2017, Public Class Fields è nella fase 2, il che significa che è descritta con precisione e che i revisori sono stati assegnati, ma non è stato completamente rivisto.
Il pacchetto predefinito Babel per Stage 3 : la pagina dei plug-in, con collegamenti a Git e NPM, per tutte le proposte Stage 3. Fondamentalmente, questo plug-in inserisce la raccolta di pacchetti che, in teoria, completano le proposte attuali nella fase 3 del TC39. In pratica, possono verificarsi errori. Inoltre, puoi trovare lo stesso Simile, si collega alle pagine dei plug-in per la fase 2 e precedenti. Queste pagine si collegheranno a pacchetti che includono sia proposte Stage 3 sia proposte meno stabili.
Preset Babel 'env' : questo preset Babel supporta le proposte completate, selezionando i pacchetti corretti necessari per supportare queste funzionalità in un ambiente noto. Ad esempio, un node
eseguibile locale richiede meno plug-in rispetto a un browser meno recente. Si può pensare al plug-in 'stage-4' che supporta le funzionalità future approvate.
In breve, è necessario occuparsi solo di queste funzionalità preliminari se le si utilizza. Se hai bisogno di usarli, scegli il numero più alto di stage che ha quello che ti serve. Se vuoi solo un'installazione giocattolo con caratteristiche folli per discutere del dispositivo di raffreddamento dell'acqua, vai avanti e afferra la fase 0.
Questo è il miglior punto di partenza per capire. Cosa sono i preset babele
Un estratto dal link:
Stage 0 - Strawman: solo un'idea, possibile plug-in Babel.
Fase 1 - Proposta: su cui vale la pena lavorare.
Fase 2 - Bozza: specifica iniziale.
Fase 3 - Candidato: specifiche complete e implementazioni iniziali del browser.
Fase 4 - Fine: verrà aggiunta alla prossima versione annuale
Immagine generale :
preset
in termini di babel. E ogni preset contiene plugin di vari livelli di rischio.preset-0
Significa che ha plugin per funzionalità che sono molto sperimentali e quindi ad alto rischio di arrivare alle specifiche finali. È come un'idea che è venuta a uno sviluppatore che Javascript dovrebbe avere una caratteristica particolare, e ha fatto un po 'di lavoro per portarlo al processo di proposta del TC-39.preset-1
Contiene i plug-in per le idee di funzionalità accettate dal TC-39 e trovano che valga la pena lavorare.preset-2
Plugin per funzionalità in cui una bozza iniziale è pronta per la funzione. E continua ...Quindi potrebbe succedere che una caratteristica dello Stage 0 abbia raggiunto lo Stage 2 in qualche tempo e finisca per essere nella prossima versione di Javascript ancora più tempo dopo.
Quindi, con ogni versione di questi preset Babel, puoi trovare diversi set di plugin in esso. Potrebbe anche accadere che una caratteristica della fase 0 abbia subito alcune modifiche e abbia apportato modifiche sostanziali al suo funzionamento. E ha raggiunto, diciamo fase 2 con un'API totalmente diversa. Quindi gli sviluppatori devono assicurarsi che quando aggiornano questi plugin apportino le necessarie modifiche al loro codice.
La domanda originale è "Qual è la differenza tra babel-preset-stage-0, babel-preset-stage-1, babel-preset-stage-2 e babel-preset-stage-3", è strano che le risposte si concentrino sulla differenza " tra TC39 fase-0, fase-1 .. la terminologia "viene votata, mentre l'unica pertinente (anche se non accurata) è sotto votata. Per citare dal sito di babele:
Un predefinito Babel è un elenco condivisibile di plugin.
I preset ufficiali Babel Stage hanno monitorato il processo di stadiazione TC39 per nuove proposte di sintassi in JavaScript.
Ogni preset (es. Stage-3, stage-2, ecc.) Includeva tutti i plugin per quel particolare stage e quelli sopra di esso. Ad esempio, la fase 2 includeva la fase 3 e così via.
L'idea principale è "quelli sopra di essa". Non rispondo alla seconda metà poiché le risposte sopra sono molto valide in quella parte.
Ce l'ho Ragazzi potete fare riferimento a https://babeljs.io/docs/plugins/preset-stage-0/
In breve, preset-stage-0
contiene tutte le funzionalità che preset-stage-1
ha e preset-stage-1
contiene tutte le funzionalità che preset-stage-2
ha e così via ...
La cifra più bassa è più potente. Nel tuo progetto, se non ti preoccupi di problemi, basta impostare stage-0
...
stage-0
, ecc. In realtà? Dal momento che dici "La cifra più bassa è più potente", credo di no.
stage
con ES6
, @RGraham lo hanno sottolineato The Babel Preset which contains only ES6 features is preset-es2015
. Grazie!
babel-preset-stage-0
include tutti i plugin, che vanno da stage-0
a stage-3
. Significa che voglio tutte le funzionalità proposte, non importa se possono farcela o meno.
stage-1
? è sicuro da usare? Alcunestage-1
funzioni possono essere deprecate e le API possono essere modificate in futuro?