2016-03-04 108 views
0

我正在嘗試爲intl填充創建一個包,以便僅爲需要它的瀏覽器加載它。使用Webpack進行Intl填充的代碼拆分

使用下面的代碼,它創建捆在我的輸出文件夾

if (!window.Intl) { 
    require.ensure(['intl/dist/Intl'], (require) => { 
    window.Intl = require('intl/dist/Intl'); 
    }, 'intl-bundle'); 
} 

我首先注意到的是文件的大小是巨大的,它包含了所有的語言,有沒有辦法來定義我想要的語言?

另一個問題是,當瀏覽器嘗試下載文件時,它會從我的應用程序的根文件夾中嘗試。所以,而不是下載http://mydomain/js/1.intl-bundle.js,它試圖得到http://mydomain/1.intl-bundle.js

有沒有一種方法來設置從哪裏下載文件?

webpack.config.js輸出如下:

output: { 
    path: './js/', 
    filename: '[name].js' 
}, 

最後一個問題,我可以在該文件的名稱的開頭刪除1.,只需要有intl-bundle.js

感謝

回答

0

實際上,我要回答一些我自己的問題,因爲我剛剛發現了一些解決方案的研究在幾個小時後。

對於第二個問題,我沒有在構建中定義publicPath,這就是瀏覽器從我的域的根下載文件的原因。更多信息:https://github.com/webpack/docs/wiki/configuration#outputpublicpath

output: { 
    path: './js/', 
    publicPath: './js/' 
} 

對於最後一個問題,你可以用下面的命名塊:

output: { 
    chunkFilename: '[id]-[name]-[chunkhash].js' 
} 

這可以讓你決定你的塊的名稱。

我還沒有任何答案來減小intl文件的大小。