2017-02-02 4 views
0

英語は母国語ではありません。NodeJSがサポートされている場合、BabelはES5に変換されません。

NodeJS LTS 4.xと6.xは、ES6構文の一部であり、6.x、node.greenでのみサポートされています。

私はバックエンドを持っていますノードプロジェクトは現在ノード4.xバージョンをサポートする必要がありますが、6.xバージョンでしか動作しない構文を使用する必要があります。だから私はpreset-es2015とバベルを導入しました。しかし、このプリセットでは、BabelはES6からES5に変換します。

constletなどのES6の部分は、パフォーマンスがvar(これは仮説ですが、実際はあまり単純ではない)よりも高いです。

私のコードは、ノード6.xの99%またはノード4.xの57%でES6サポートで動作しています。実際には、すべてのコードをES5にダウングレードする必要はありません。

NodeJSがサポートされている場合、BabelがES6構文をES5に変換しないようにする方法を知りたいと思います。

さらに、Babelは現在のオペレーティング環境でコードを検出してインテリジェントに変換することをサポートしていますか?

ありがとうございます。

更新日:babel-preset-env私が欲しいものです。

答えて

2

babel-preset-envでは、特定のノード(またはブラウザ)のバージョンをターゲットにすることができます。私。そのバージョンでサポートされている機能は移行されません。例:

さらに
{ 
    "presets": [ 
    ["env", { 
     "targets": { 
     "node": 4 
     } 
    }] 
    ] 
} 

、インテリジェント現在のオペレーティング環境のコードのサポートを検出し、バベルのサポートは、それを変換するのですか?それは実際には不可能ですので、

Transpilationは、通常、オフラインでコードがターゲット環境で実行される前です。

+0

ありがとうございました。 ['babel-preset-env'](https://github.com/babel/babel-preset-env)は私が望むものです。私はテストをして、それは正常に働いた。ありがとうございました。 –

0

ES6からES5をコンパイルする場合は、Babel ES2015プリセットをインストールする必要があります。

npm install babel-preset-es2015 

このプリセットを有効にする必要があります。 ES5のコンパイルにこのES6を可能にする1つの方法は、バベル・ローダクエリ文字列を使用している:

module: { 
    loaders: [ 
     { 
     test: /\.js$/, 
     loader: 'babel-loader?presets[]=es2015' 
     } 
    ] 
    } 

またはクエリオプション:

module: { 
    loaders: [ 
     { 
     test: /\.js$/, 
     loader: 'babel-loader', 
     query: { 
      presets: ['es2015'] 
     } 
     } 
    ] 
    } 
+0

ありがとうございました。しかし、私は 'preset-es2015'を使っていますし、BabelがすべてのコードをES5に変換したくないのです。 –

+0

あなたはOPがwebpackを使用していると思いますか?あなたの例はwebpackのためのものであると少なくとも言及するべきです。 –

関連する問題