2015-09-10 5 views
10

webpackを使用して、第三者が使用するフレームワークをバンドルしています。このフレームワークは、複数のES6クラスを公開する必要があります。モジュラーな方法で構築すると、ファイルごとに1つのクラスを作成しました。私がしたいことは、これらのファイルをすべて一緒にビルドし、与えられた "名前空間"の下にバンドルさせることです。例:私は、ブラウザでこのライブラリをロードし、コンソールにfruitを入力すると、webpackは複数のエントリファイルからクラスをエクスポートします

module.exports = { 
    entry: ['./src/apples.js', './src/oranges.js'], 
    output: { 
    path: './dist', 
    filename: 'fruit.js', 
    library: 'Fruit', 
    libraryTarget: 'umd' 
    } 
} 

しかし:

export class Apples {...}
oranges.js export class Oranges {...}

webpack.config.jsをapples.js 、私は果物の下でオレンジオブジェクトを見るだけです。最後のエントリファイルのみがライブラリに戻って公開されます。確かに、webpackのドキュメントではこの動作を確認しています。

すべてのモジュールは起動時に読み込まれます。最後のものがエクスポートされます。 http://webpack.github.io/docs/configuration.html#entry

私の現在の回避策は、一つのファイルからすべての私のクラスをエクスポートすることですが、それはかなり扱いにくいなってきました。

エクスポートされた複数のエントリファイルを使用してライブラリを設定するにはどうすればよいですか?それとも、ここで間違ったやり方をしていますか?

+2

エクスポートするものを手動で定義するインデックスファイルをいくつか持たせたくないと言っていますか?私は完全にフォローしていません。 – loganfsmyth

+0

@loganfsmythこれは部分的に私がこれについて間違った方法をしているのだろうと思っている理由です。私はリンゴとオレンジをインポートしたインデックスファイルを追加してから 'export {Apples、Oranges}'を実行しました。それは実行可能な解決策であるようです。 –

+1

それは私が期待しているアプローチです。終わりには、モジュールにはいくつかのパブリックAPIとプライベートなものがあり、インデックスファイルはそれを中央の場所で定義できるものです。 – loganfsmyth

答えて

1

あなたは、サーバーモジュールの構成方法を示すために、entry.jsファイルを使用することをお勧めします。ところで

import Apples from './apples'; 
import Oranges from './oranges'; 

export { 
    Apples, 
    Oranges 
}; 

、あなたがあなた自身のことで、このような愚かなコードを記述したくない場合は、エントリにWebPACKの実行後、いくつかのロジックによってファイル「entry.autogenerated.js」を生成するがぶ飲み/グラントを使用'entry.autogenerated.js'。

関連する問題