2017-03-13 11 views
29

は、私は現在、バベルの構成について理解しようとしているが、babel-preset-**で混乱してしまった、バベルには多くのプリセットがあるenves2015reactなどのように、私はbabel-preset-es2015がjsの前のコードにes2015コードをtranspileするために必要であることを理解しませんほとんどの/古いブラウザで理解することができるので、何についてbabel-preset-envbabel-preset-es2015とbabel-preset-envの違いは何ですか?

これらのプリセットの違いは何ですか? 1つはes2015を使わずにenvを使うことができますか?これらの2つのプリセットがプロジェクト構築システムに存在する必要がある場合はどうなりますか?

ありがとうございます。

答えて

33

babel-preset-es20XX(15,16,17)プリセットには、その特定の年に追加されたフィーチャを以前のバージョンと互換性のあるコードに変換するために必要な変換が含まれています。

babel-preset-envには、仕様に準拠しているすべての機能の変換が含まれていますが、提供している環境のセットに基づいて機能を動作させるために必要な変換のみが可能です。 envにオプションを渡さないと、基本的にes2015, es2016, es2017のように動作します。

babel-preset-reactは、FlowtypeやReactのJSXなどのReact/Facebook関連の構文拡張を変換するのに必要な変換のセットです。

+0

'babel-preset-env'は縮小プロセスをUglifyJSからbabiliに変更しますか?私はそれでやや混乱している。 –

+1

それはしません。どのように省力化が行われるかは別です。 'preset-env'はあなたの出力コードをES6にするかもしれませんし、標準のUglifyはES6を扱うことができないので、' env'を 'uglify'と一緒に使うと、' uglify'ターゲットを使うべきです:https://github.com/babel/ babel-preset-env#targetsuglify – loganfsmyth

関連する問題