2017-02-01 5 views
1

必要があります。私は名前require('moduleName')によってモジュールを必要とする場合WebPACKの複数のルートとダイナミックで、私はWebPACKの2つの根で構成している

resolve: { 
    root: [ path.resolve('./src/siteName'), path.resolve('./src/common') ] 
}, 

モジュールの決意は完璧に動作します。それはsiteNameフォルダーにあり、そこにモジュールが見つからない場合はcommonフォルダーにあります。

モジュールを動的に要求しようとすると、webpackはsiteName/Pagesのすべてのファイルをバンドルに追加しますが、common/Pagesフォルダのファイルは無視します。

私はrequire.contextを調べましたが、すべて両方のフォルダからのファイルを含むようになりました。次のようなファイル構造を考えると、まとめると

var req = require.context('../', true, /\/(siteName|common)\/Pages/); 
var page = req(pageModuleName); 

:WebPACKのはで設定するため

common/Pages/PageA.js 
common/Pages/PageB.js 
siteName/Pages/PageA.js 

を私は

require('Pages/' + pageModuleName); 

ような何かを行うときには、それが可能です追加する方法ちょうど

バンドルへ
siteName/Pages/PageA.js 
common/Pages/PageB.js 

と私はあなたが達成しようとしているものとは思わない

common/Pages/PageA.js 

答えて

0

を「無視」。それが効果的にteelsがrootとして./src/siteName/./src/commonを使用するようにWebPACKのあなた

resolve: { 
    root: [ path.resolve('./src/siteName'), path.resolve('./src/common') ] 
}, 

。したがって、両方のディレクトリに/pagesがある場合、最終的にパスが重複します。

//what you want     // what webpack see 
siteName/pages/PageA.js    pages/PageA.js 
siteName/pages/PageB.js  =>  pages/PageB.js 
common/pages/PageA.js     pages/PageA.js 
common/pages/PageB.js     pages/PageB.js 

だからあなたはあなたが少しを起草いいです

resolve: { 
    root: [ path.resolve('./src') ] 
}, 
+0

に設定する必要がありますか?私は2つのバンドルを作成するつもりはなく、2つのconfigsでどのように動作するのか分かりません。私のエントリーポイントは 'common'フォルダーにあり、それは実際には動的' require'を持つファイル/ルーターです。 –

+0

@JohnNikolakis oops ..私は誤解しました。しかし、私はあなたがしようとしていることは達成できるとは思わない。ルートネーミングの変更を検討するか、ファイル内からrequireを行い、絶対パスを使用することをお勧めします。 https://github.com/webpack/webpack/issues/472 –

関連する問題