2017-04-27 71 views
0

我已經使用Webpack一點。我知道誰要做多個捆綁取決於多個入口點,但我有一個新的情況。基於配置的Webpack多捆綁

我們的一個項目有3個不同國家的單一代碼庫(3個不同的URL和不同的URL結構)。我們爲C1,C2,C3設置了一組共同​​的代碼和代碼。我想運行一個單一的建立和編譯在2個不同的文件的ES6代碼,例如

app-common.jsc1-common.jsc2-common.jsc3-common.j2

或者

c1-app.jsc2-app.jsc3-app.js這將有共同的和具體的js代碼baesd在配置上,比如我想用哪個文件綁定哪些文件。

是否有任何現有的方法來做到這一點或如何實現?任何人都可以幫助任何想法或資源,請嗎?

由於提前

Ariful

+0

你有沒有試過'CommonsChunkPlugin' https://webpack.js.org/plugins/commons-chunk-plugin/或'dllPlugin'?嘗試閱讀此https://robertknight.github.io/posts/webpack-dll-plugins/ –

回答

1

您可以創建一個單點的入境文件,您的本地化代碼,並以此爲基礎進行自定義的環境變量條件require語句。然後設置在您的WebPack配置:

new webpack.DefinePlugin({ 
    'process.env.COUNTRY_CODE': 'fr' 
}), 
在你的代碼

然後:

let i18n_config; 
const country = process.env.COUNTRY_CODE || 'en'; 

if (country === 'en') { 
    i18n_config = require("./i18n/en.js"); 
} 
if (country === 'fr') { 
    i18n_config = require("./i18n/fr.js"); 
} 

你可以更進一步,並使用主動minifier去除死碼:

const isEN = country === 'en'; 
const isFR = country === 'fr'; 

if (isEN) { 
    i18n_config = require("./i18n/en.js"); 
} 
if (isFR) { 
    i18n_config = require("./i18n/fr.js"); 
} 
// ... and so on 

您的if報表將編譯爲if (true) {...}if (false) {...}false塊將被視爲死碼,並將被縮小器刪除。

+0

今晚將嘗試。 –