2016-08-08 5 views
3

Babelを使用して2つのES6ファイルを1つのES5出力ファイルにコンパイルしようとしています。バベルを使用してコンパイルされたアウトファイルの重複宣言

var _createClass = function() { ... } 

ここ
Object.defineProperty(exports, '__esModule', {value: true}); 

ファイルは、次のとおりです:

はFile1(./ec6/ec6Class.js)

export class MyClass { 
    constructor(dep1, dep2) { 

    } 

    foo() { 
     console.log('foo') 
    } 
} 
結果のファイルは以下のように重複して宣言を含むように思われます

ファイル2(./ec6/ec6Class2.js)

import MyClass from './ec6Class'; 

export class MyClass2 extends MyClass { 
    constructor(dep1, dep2) { 
     super(dep1, dep2) 
    } 

    bar() { 
     console.log('bar') 
    } 
} 

マイバベルCLIコマンドは次のとおりです。

babel src/client/ec6 --out-file script-compiled.js 

どのように私はバベルインフラストラクチャの単一の宣言を持つ単一のファイルへの2つのファイルをコンパイルするには?重複した宣言が望ましい動作ではありません。

+1

この目的のために外部ヘルパーを使用することができます.. https://babeljs.io/docs/plugins/external-helpers/ – cswl

答えて

0

Babelにはsrc/client/ec6で見つかるすべてのファイルをコンパイルするように言われていますが、あなたが望むのは1つのエントリポイントです(実際にはそれがあります)。 Babelはec6Class.jsを一度コンパイルします。これはec6Class2.jsでインポートされているため、そのディレクトリ内のファイルなのでもう一度コンパイルします。

は、私があまりにも速く答え申し訳

babel src/client/ec6/ec6Class2.js --out-file script-compiled.js

EDIT
で試してみてください。実際、Babelは、javascriptファイルを最先端のESからより互換性のあるものに単純に変換することを目的としています。あなたが必要とするのは、Webpackと組み合わせて、複数のjavascriptファイルを1つにパックするツールです(それを縮小することもできます)。

コマンドラインからWebpackを使用して、Babelを使用してファイルを最初にトランスファイルするように指示できます。良いスタートガイドについては、Webpack — The Confusing PartsをMediumで読むことができます。

+0

ありがとうございますが、それはしませんでした。結果ファイルには、ファイルスコープ内でec6Classを使用することに依存する 'var _ec6Class = require( './ ec6Class');という行が含まれます。ここでの目標は、同じファイル内にすべてを持つことです。単一のファイルで実行できる実際の自己完結型コード – orberkov

+0

あなたは正しいです、私は自分の答えを編集しました。 – mjsarfatti

+0

私はプロジェクトにwebpackを追加し、あなたが言ったようにマージしてBableに設定しました。それは私にとって素晴らしい仕事でした。ありがとうございました! – orberkov

関連する問題