2017-04-27 66 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

今晚将尝试。 –