2016-07-12 1 views
0

は私がWebpackはそのバンドルに何を含めるべきかを決定しますか?

/app 
|_webpack.config.js 
|_package.json 
|_/npm_modules 
| |_... 
|_/client 
    |_/misc 
    | |_... 
    |_/components 
    | |_... 
    |_index.jsx 

webpack.config.jsはこのようなこの

entry: ["./client/index.jsx"] 

index.jsx負荷のすべてのコンポーネントが含まれている次のような構造でプロジェクトを持っていると仮定し

var components = []; 
var componentPaths = require.context("./components", false); 
componentPaths.keys().forEach(function(path) { 
    components.push(componentPaths(path)); 
}); 

にバンドルされます何のファイル結果としてbundle.js?
/app/client/index.jsx/app/client/componentsディレクトリ内のすべてのファイルになりますか?
/app/clientディレクトリ全体が同梱されます(/app/client/miscのすべてを含む)?
/app/npm_modulesのディレクトリも含め、/appディレクトリ全体がバンドルされますか?

私はWebpackのドキュメントに基づいてこれを理解しようとしてきましたが、それらは不十分です。あなたが情報を見つけた場所への参照を含む答えを知っているなら、非常に役に立つでしょう。

結果として得られるbundle.jsファイルに必要なものだけが含まれる複数のエントリポイントを持つプロジェクトを設定したいので、私は尋ねています。

答えて

3

importまたはrequireを使用しているためです。ファイルがインポートされていない、または必要でない場合、そのファイルはバンドルに含まれません。

It's explained here.

注:importはES6機能であり、あなたはほとんどのブラウザを渡ってそれを使用するためにバベルの必要があると思います。

+0

'/ app/client/misc'の下のファイルは含まれないと言っていますか? webpackは、ファイル内のすべてのrequire文とimport文を検索し、依存関係をそのように判断しますか? – AjaxLeung

+0

はい、そうです。ファイルをインポートまたは要求しない場合は、Webpackにバンドルされません。もちろん、それらのファイルをあなたのdevまたはproductionフォルダにコピーするノードスクリプトを書くことができます。 – Pier

+0

また、Webpackはすべてのインポート/再帰を再帰的に検索します。 – Pier

関連する問題