私の質問は、babel-preset-stage-0
、babel-preset-stage-1
、babel-preset-stage-2
とbabel-preset-stage-3
の違いは何ですか?また、ES6
を使用して開発する場合の最良の選択は何ですか?
Babelのステージプリセットは、 TC39プロセス と、潜在的な言語変更の各提案のさまざまな状態に相当します。それらには、その段階で提案されたすべての変更の実装とポリフィルが含まれます。
現在Stage-0
にあるものはStrawman、notES6です。これは将来のJavascriptであり、公式のECMAScript仕様に組み込まれることは絶対に確実ではありません。
stage-0
に設定するだけをしないでください。これがもたらす結果を理解せずに動作します。
ES6機能のみを含むBabelプリセットは preset-es2015
です
ステージは、ES6などの受け入れられた標準へのクレイジーだが有用なアイデアから機能を動作させるTC39プロセスによって定義されるステージを表します。すべてのコーナーケースについて話し合い、考え、テストし、ポリフィルし、さらに話し合う必要があるため、プロセスには時間がかかります。つまり、標準化団体です。目標は、「ES6」と言うことは「ES5」と同じように完全かつ完全な意味を持つことです。
実際には、プロジェクトの要件は、試行錯誤にとどまることから、非常に便利な、あいまいな言語機能をいじるまでさまざまです。これらのリンクから始めたいと思うでしょう:
TC39プロセスの概要 :これには、ステージの意味と、ステージからステージへの機能の進行状況に関する気の利いたチャートが含まれます。以下は、TC39の概要です。
アクティブな提案 :特定の提案がどの段階にあるかの概要今日、2017年4月、パブリッククラスフィールドはステージ2にあります。つまり、正確に記述され、レビュー担当者が割り当てられていますが、完全にはレビューされていません。
ステージ3のバベルプリセットパッケージ :すべてのステージ3プロポーザル用のGitおよびNPMへのリンクを含むプラグインページ。基本的に、このプラグインは、理論上、TC39ステージ3の現在の提案をポリフィルするパッケージのコレクションを取り込みます。実際には、バグが発生する可能性があります。同様に、同様に、 Stage 2 以下のプラグインページにリンクしています。これらのページは、ステージ3の提案と安定性の低い提案の両方を含むパッケージにリンクします。
Babel Preset 'env' :このBabelプリセットは、完了した提案をサポートし、既知の環境でこれらの機能をサポートするために必要な正しいパッケージを選択します。たとえば、ローカルのnode
実行可能ファイルは、古いブラウザよりも少ないプラグインで済みます。承認された将来の機能をサポートする「stage-4」プラグインと考えることができます。
要約すると、これらのプレリリース機能を使用する場合にのみ対処する必要があります。それらを使用する必要がある場合は、必要なステージを最も多く選択してください。クレイジーな機能を備えたおもちゃのインスタレーションで、ウォータークーラーについて議論したい場合は、先に進んでステージ0を入手してください。
元の質問は「babel-preset-stage-0、babel-preset-stage-1、babel-preset-stage-2、およびbabel-preset-stage-3の違いは何ですか」であり、「違いTC39のステージ0、ステージ1の間に用語集」が投票されますが、関連する(正確ではありませんが)1つだけが投票されます。 babelサイトから引用するには:
Babelプリセットは、プラグインの共有可能なリストです。
公式のBabel Stageプリセットは、JavaScriptでの新しい構文提案のTC39ステージングプロセスを追跡しました。
各プリセット(ステージ3、ステージ2など)には、その特定のステージとその上のプラグインのすべてのプラグインが含まれていました。たとえば、ステージ2にはステージ3などが含まれます。
核となるアイデアは「その上にあるもの」です。上記の答えはその部分で非常に良いので、私は後半に答えません。
これは理解するのに最適な出発点です。 バベルプリセットとは
リンクからの抜粋:
ステージ0-Strawman:単なるアイデアであり、Babelプラグインの可能性があります。
ステージ1-提案:これは取り組む価値があります。
ステージ2-ドラフト:初期仕様。
ステージ3-候補:完全な仕様と最初のブラウザー実装。
ステージ4-終了:次の年次リリースに追加されます