私のnode webpackプロジェクトは、3つのbabelライブラリを使用しています。これらの違いは何ですか、どのように使用されていますか?
"dependencies": {
"babel-runtime": "^5.8.24"
}
"dev-dependencies": {
"babel": "^5.8.23",
"babel-core": "^5.8.23"
}
babel-core
はAPIです。 v5の場合、babel
パッケージはCLIであり、babel-core
。 v6では、babel-cli
パッケージはCLIです(CLI binコマンドはまだbabel
ですが)babel
パッケージは何もしません。 babel-runtime
すでに変換されたコードをサポートするための単なるランタイム(ポリフィルとヘルパー)であると思います。
TL; DRここで比較するものは次のとおりです。
https://babeljs.io/blog/2015/10/31/setting-up-babel-6 :
Babelパッケージはもうありません。以前は、コンパイラ全体とすべての変換に加えて多数のCLIツールでしたが、これは不必要に大きなダウンロードにつながり、少し混乱を招きました。これで、2つの個別のパッケージ、babel-cliとbabel-coreに分割しました。
npm install --global babel-cli
または
npm install --save-dev babel-core
CLIからBabelを使用する場合はbabel-cliをインストールできます。Node APIを使用する場合はbabel-coreをインストールできます。
babel-runtimeは、グローバルスペースを汚染するbabel-polyfillとは異なり、グローバルスペースを汚染しないpolyfillのみを許可します。 http://babeljs.io/docs/plugins/transform-runtime/ から:
[babel-runtime]は、グローバルを汚染することなくコードを自動的にポリフィルします。 (このプラグインはライブラリ/ツールで推奨されます)
Babel-runtimeを使用する場合は、以下も行う必要があります
npm install --save-dev babel-plugin-transform-runtime
ほとんどの場合、babel-plugin-transform-runtimeを開発の依存関係(--save-devを使用)としてインストールし、babel-runtimeを本番の依存関係(--saveを使用)としてインストールする必要があります。
変換プラグインは通常、開発でのみ使用されますが、ランタイム自体はデプロイ/公開されたコードに依存します。
また、babel-runtime + babel-plugin-transform-runtimeとbabel-polyfillは一般に相互に排他的です。つまり、どちらか一方のみを使用する必要があります。ここのコメントから http://jamesknelson.com/the-six-things-you-need-to-know-about-babel-6/ :
Babel-polyfillまたはbabel-runtimeを使用する必要があります。これらは相互に排他的です。もちろん、自分が何をしているかを知っている場合を除きます。しかし、それらは本質的に同じものです。これらは単なるヘルパーです。 babel-polyfillはグローバルを変更することで同じ目標を達成しますが、babel-runtimeはモジュール的に変更します。ライブラリを開発している場合を除き、ポリフィルを使用することをお勧めします。
バベル6について知っておくべき6つのこと 引用するために、それを非常によく説明しました
Babel npmパッケージはもう存在しません。代わりに、Babelは複数のパッケージに分割されています。
babel-cliにはbabelコマンドラインインターフェースが含まれ、babel-coreにはNode APIが含まれ、必要な場合はフックbabel-polyfillが必要です。偶発的な競合を避けるため、package.jsonからbabelやbabel-coreなどの以前のBabelパッケージを削除してから、npmをアンインストールしてください。