2015-10-19 83 views
13

考慮到還有的WebPack配置動態需要的WebPack在構建時

... 
entry: { 
    'bundle-with-dependency-a': 'common-entry.js', 
    'bundle-with-dependency-b': 'common-entry.js' 
}, 
resolve: { 
    alias: { 
     'dep-a': ..., 
     'dep-b': ... 
    }, 
}, 

,我會期望在common-entry.js是這樣的:

require('dep-' + entryName.slice(-1)); 

即我想從配置中提供特定需求的定義。

問題是,可能有超過2個依賴項選項,我避免了copypasting。而且我正準備在構建時執行此操作,而不是要求使用JSONP的塊。

這怎麼能做到動態?

我在這裏得到的唯一選擇是爲每個dep有不同的配置,但這需要多個Webpack傳遞而不是單個傳遞。不是很方便。

回答

4

使用:

webpack.config.js

{ 
    entry: { 
    'bundle-with-dependency-a': 'imports?depName=>"dep-a"!./common-entry.js', 
    'bundle-with-dependency-b': 'imports?depName=>"dep-b"!./common-entry.js', 
    }, 
    // ... 
} 

depName變量將被暴露於common-entry.js模塊。

+0

它看起來不錯,我不知道我甚至不知道裝載機可以在條目中使用。我想知道除了'進口'以外是否還有其他方法,可以有幾個相同的前綴('a'或'b'),這會使加載器查詢字符串相當長。 – estus

+0

然後,我會建議你看看自己的加載器,或者創建一個函數來爲你生成查詢字符串。例如:'進口({depName:'dep -a'})+'。/ common-entry.js'' –

+0

是的,構建查詢已經足夠好了。我想知道是否還有其他迴旋處,例如'context'和ContextReplacementPlugin(Webpack文檔對它們的潛在用途缺乏可笑)。 – estus