2016-10-23 7 views
0

私はベルベルを新しくしました。バベルを使ってes3に移る(サファリ対応)

私はこのようにそれを設定:

.babelrc:

{ 
    "presets": ["es2015", "es2017"] 
} 

gulpfile:

gulp.task('default', function() { 
    return gulp.src(['src/**/*.js', '!src/**/3rd/*']) 
     .pipe(babel()) 
     .pipe(gulp.dest('dist')); 
}); 

しかし、これは完全にSafariでサポートされていませんES5にコンパイルしているようです。

ターゲットを設定する方法はありますか?だからES3にコンパイルできますか?

答えて

2

いいえ、BabelはES3への移動をサポートしていません。

あなたのオプションは以下のとおりです。

  1. はES5にコンパイルしてES5 shimを使用しています。

  2. 別のトランスバータを使用してください。 Google Closure CompilerTypeScriptはどちらもES6を入力として、ES3を出力としてサポートしています。

注:それはES5(詳細はcaveatsを参照)に存在しない特徴を有していてもよいようバベルは、すべてのブラウザで動作しないことが生じ「ES5」のコード。つまり、古いブラウザをターゲットにしているため、Babel polyfillとES5 shimも必要です。

+0

ああありがとうございました。 – Noitidart

+0

私は 'npm install --save-dev babel-polyfill'を実行しました。私のjsファイルには' import 'babel/polyfill'; 'というファイルがありました。 require( 'babel/polyfill'); 'これはjsfiddle.netに貼り付けると明らかにうまくいきません - 私は' defiendが必要ではありません 'を得ます。 – Noitidart

+1

これは少し別の問題です。要するに、モジュールローダーが必要です。私は非常に**徹底的な概要を与えるので、[この質問](http://stackoverflow.com/questions/31593694/do-i-need-require-js-when-i-use-babel)をお勧めしたいあなたの選択肢がこの点でどのようなものかを示します。 – fstanis

関連する問題