Babelオプション/設定で少し迷ってしまいました。最近のjs機能を使用し、(webpackを使用して)ブラウザーコードにコンパイルします。
babel-polyfill と babel plugins の違いは何ですかbabel-preset-env
?
彼らは一緒に働くつもりですか?
_
babel transform plugin
_と_babel-polyfill / babel-runtime
_の違いは、ES5で機能を今日再実装できるかどうかです。たとえば、_Array.from
_はES5で書き換えることができますが、JavaScriptに矢印関数構文を追加するためにES5で記述できるものはありません。したがって、矢印関数の変換はありますが、_Array.from
_の変換はありません。 _babel-polyfill
_または_babel-runtime
_のような別のポリフィルによって提供される必要があります。
余談ですが、これが私の現在のバベルの生態系に対する理解です。
Babel
はJavaScriptコンパイラです:itparses、transformsおよびは、変換されたコードを出力します。
babel-polyfill
_と_babel-runtime
_の違い:前者はグローバルメソッドを定義し(グローバルスコープを汚染)、後者はコードを変換して この回答で説明されているのと同じ機能を利用できるようにします 。babel syntax / transform plugins
_:es2015 +構文を解析して変換し(矢印関数のように)、es5に変換します。babel-plugins-stage-x
_(ステージ0からステージ4へ):JS仕様にはまだ含まれていない将来のJavaScript構文を、ステージ0(アイデア)からステージ4(babel-plugins
_すぐに)。babel-preset-env
_は、特定の環境に必要なBabelプラグインとポリフィルを決定します。target
オプションを指定すると、特定のターゲットでの実行に必要なプラグインのみがロードされます。builtIn
オプションを使用すると、ターゲットではない組み込みでない_babel-polyfill
_のみが使用されます。babel-transform-runtime
_では機能しません(2017年11月現在)。 ( this issue を参照)babel-preset-env は、自動的に設定することを目的としたBabelプリセットです babel plugins とターゲット環境のセットに基づいて必要な babel polyfills を含めます 機能互換性テーブル に対してチェックされます。
完全に機能するES2015 +環境を非ES2015 +クライアントで実行するには、単純なコードトランスレーションでは不十分な場合があります。
Promise
、Map
、Object.assign
...など)は core-js (babel-polyfillも提供)だから、あなたの質問に戻って、babel-preset-envはbabel-polyfillとbabelプラグイン。