Ma question est la suivante: quelle est la différence entre babel-preset-stage-0
, babel-preset-stage-1
, babel-preset-stage-2
et babel-preset-stage-3
, et quel est le meilleur choix lorsque nous développons avec ES6
?
Les préréglages de Babel correspondent au processus TC39 et aux différents états de chaque proposition de changement de langue potentiel. Ils incluent des implémentations et des polyfill pour toutes les modifications proposées à cette étape.
Tout ce qui se trouve actuellement dans _Stage-0
_ est Strawman, et non ES6. Il est à l’avenir javascript et absolument pas sûr qu’il deviendra un jour une spécification officielle ECMAScript.
Veuillez ne pas simplement régler sur _stage-0
_ afin que cela fonctionne sans comprendre les conséquences que cela aura.
Le préréglage Babel contenant uniquement les fonctionnalités de l’ES6 est preset-es2015
Les étapes représentent les étapes définies par le processus TC39 qui fonctionne à partir d’idées loufoques mais utiles en normes acceptées, telles que ES6. Le processus prend du temps, car chaque cas doit être discuté, réfléchi, testé, rempli de fonctions, discuté davantage, etc. C'est-à-dire qu'il s'agit d'un organisme de normalisation. Le but est que dire "ES6" aura un sens complet et complet, un peu comme si on disait "ES5".
Dans la pratique, les exigences de votre projet peuvent aller du simple fait d’être éprouvé à la manipulation de fonctionnalités langagières si pratiques, si nébuleuses. Vous voulez probablement commencer avec ces liens:
Vue d'ensemble du processus TC39 : Ceci inclut un tableau astucieux indiquant la signification des étapes et la progression des fonctionnalités d'une étape à l'autre. Vous trouverez ci-dessous un aperçu du TC39.
Les propositions actives : Un aperçu rapide de l'état d'avancement de certaines propositions. Il comprend également des liens vers les propositions Terminé, Inactif et Étape 0. Aujourd'hui, en avril 2017, Public Class Fields est à l'étape 2, ce qui signifie qu'il est décrit avec précision et que les réviseurs ont été affectés, mais qu'ils ne sont pas entièrement examinés.
Le paquet prédéfini Babel pour Stage : la page du plug-in, avec des liens vers Git et NPM, pour toutes les propositions de Stage 3. Fondamentalement, ce plug-in fait partie de la collection de paquetages qui, en théorie, comblent les propositions actuelles de l'étape 3 du TC39. En pratique, des bogues peuvent survenir. De même, vous pouvez trouver le même similaire. Il contient des liens vers les pages de plug-ins pour Stage 2 et les versions antérieures. Ces pages renverront vers des packages contenant à la fois des propositions de phase 3 et des propositions moins stables.
Babel Preset 'env' : Ce preset Babel prend en charge les propositions terminées, en sélectionnant les packages appropriés nécessaires à la prise en charge de ces fonctionnalités dans un environnement connu. Par exemple, un exécutable node
local nécessite moins de plugins qu'un navigateur plus ancien. On peut penser au plugin 'stage-4' qui supporte les futures fonctionnalités approuvées.
En résumé, vous ne devez utiliser ces fonctionnalités que si vous les utilisez. Si vous avez besoin de les utiliser, choisissez le plus grand nombre d’étages qui correspond à vos besoins. Si vous voulez juste une installation de jouets avec des fonctionnalités folles à discuter autour de la fontaine à eau, allez-y et saisissez l'étape 0.
C'est le meilleur point de départ pour comprendre. Quels sont les préréglages babel
Un extrait du lien:
Stage 0 - Strawman: juste une idée, possible du plugin Babel.
Étape 1 - Proposition: cela vaut la peine d’y travailler.
Étape 2 - Ébauche: spécifications initiales.
Étape 3 - Candidat: implémentation complète de la spécification et du navigateur.
Étape 4 - Terminé: sera ajouté à la prochaine version annuelle
Image globale :
preset
en termes de babel. Et chaque preset contient des plugins de différents niveaux de risque.preset-0
Cela signifie qu'il a des plugins pour les fonctionnalités qui sont très expérimentales et qui risquent donc beaucoup de passer à la spécification finale. C'est comme une idée qui est venue chez un développeur que Javascript devrait avoir une fonctionnalité particulière, et il a travaillé pour le faire passer au processus de proposition du TC-39.preset-1
Il contient les plug-ins des idées de fonctionnalités acceptées par le TC-39, et le travail en vaut la peine.preset-2
Plug-ins pour les fonctionnalités pour lesquelles un brouillon initial est prêt. Et ça continue ..Il est donc possible qu'une fonctionnalité de l'étape 0 atteigne l'étape 2 dans un certain temps et finisse par être dans la prochaine version de Javascript plus tard.
Ainsi, avec chaque version de ces Presets Babel, vous pouvez y trouver différents ensembles de plug-ins. Il se peut également qu’une caractéristique de l’étape 0 subisse quelques modifications et apporte des changements décisifs dans son fonctionnement. Et cela a atteint l'étape 2 avec une API totalement différente. Les développeurs doivent donc s’assurer que lorsqu’ils mettent à jour ces plugins, ils apportent les modifications nécessaires à leur code.
La question initiale était "Quelle est la différence entre babel-preset-stage-0, babel-preset-stage-1, babel-preset-stage-2 et babel-preset-stage-3", il est curieux que les réponses se concentrent sur la "différence entre la TC39, étape 0, étape 1 .. la terminologie "est votée, tandis que la seule qui est pertinente (bien que non précise) soit votée à la baisse. Pour citer le site babel:
Un préréglage Babel est une liste de plugins à partager.
Les préréglages officiels de la phase Babel ont suivi le processus de préparation du TC39 pour les nouvelles propositions de syntaxe en JavaScript.
Chaque préréglage (ex. Stage-3, stage-2, etc.) incluait tous les plug-ins de cet étage et ceux du dessus. Par exemple, l'étape 2 incluait l'étape 3, etc.
L'idée principale est "ceux qui le précèdent". Je ne réponds pas à la seconde moitié car les réponses ci-dessus sont très bonnes sur ce point.