私はnpmモジュールを作成しようとしていますが、公式のbeleljsウェブサイトで単一の指示を見つけることができません。 babel-runtimeパッケージはどのように使用しますか?名前から、package.jsonの「dependencies」セクションに配置する必要があると思います。
ここにはまったく情報がありません: https://github.com/babel/babel/tree/master/packages/babel-runtime
ここに1つの例を見つけました: https://strongloop.com/strongblog/javascript-babel-future/ しかし、「babel -h」を実行すると't list-有効なパラメーターとしてオプション。
ランタイムはオプションですが、Babel 6の他のすべてと同様に、プラグインを追加することで主に有効になります。この場合、 http://babeljs.io/docs/plugins/transform-runtime/ が必要です
plugins: ["transform-runtime"]
babel-runtime
は、ポリフィルとBabelが参照できる他の多くのものを含むパッケージです。 npm install babel-runtime
を使用してアプリにインストールしますtransform-runtime
は、ソースコードを処理し、import foo from "babel-runtime"
ステートメントを挿入して、babel-runtime
が実際に使用されるようにするBabelプラグインです。これもnpm install babel-plugin-transform-runtime
でインストールします。コードをトランスコンパイルすると、Babelは実際にヘルパーを挿入して、ターゲットとするESバージョンでサポートされていない機能をエミュレートします。
例: _class MyClass {}
_ は、インラインヘルパー__classCallCheck
_を活用します。これは、require('babel-runtime/helpers/classCallCheck')
からもアクセスできます。
デフォルトでは、これらのヘルパーはコンパイル単位(ファイル)間で共有されません。 Babelチームは、それらを1か所に因数分解することは興味深いかもしれませんが、複数回使用するときにスペースを節約できます。
この問題は、_babel-plugin-transform-runtime
_プラグインを作成することで解決されました。このプラグインは、ASTを実行し、ヘルパー注入を_babel-runtime
_モジュールの適切な要件に置き換えます。コードベース全体で共有され、重複が回避されます。
実行中のBabel環境 があると仮定します。
babel-plugin-transform-runtime
_ (devDependency
として)をインストールします。これは、コードを変換してヘルパーを削除し、_babel-runtime
_内のヘルパーを使用します。 バベル設定のplugins
配列に追加する必要がありますbabel-runtime
_ (dependency
として)をインストールします。これは、実際のライブラリ_babel-plugin-transform-runtime
_がdependencies
に含まれることを前提としています。実行時にトランスコードされたコードによって使用されます。 コードのどこにでもそれを要求する必要はありません。npm run build
_はlib
フォルダーをdist
にコンパイルしますnpm start
_はdist
フォルダーを開始します(これは_babel-runtime
_に依存します)package.json
_{
"scripts": {
"build": "babel lib --out-dir=dist",
"start": "node dist"
},
"dependencies": {
"babel-runtime": "^6.9.2"
},
"devDependencies": {
"babel-cli": "^6.10.1",
"babel-plugin-transform-runtime": "^6.9.0"
},
"babel": {
"plugins": [
"transform-runtime"
]
}
}
_