短版的WebPack隱含廠商/在IE11清單塊 - 無極是不確定的
當我運行我在IE11應用程序,我得到一個錯誤,從manifest.js文件中說Promise is undefined
。
如何添加babel-polyfill
或類似的文件,使其在之前運行清單被執行?
龍版
我想CommonsChunkPlugin以第三方(NPM包)腳本拆分爲獨立的bundle添加到我的WebPack配置。根據Webpack 2文檔,我設置了「combined implicit common vendor chunks and manifest file」,這在現代瀏覽器中運行良好。
我已經寫了一個函數來確保塊以正確的順序包含到我的索引文件中(見下文)。
背景對我的兩個明確的入口點位:
- legacy_libs - 被放入全局命名空間與
script-loader
舊庫。我希望隨着時間的推移 - 主逐步走出這些 - 我主要的應用程序入口點
另外兩個(供應商和清單)是隱式的,並與CommonsChunkPlugin創建。
當我用IE11運行這個,我得到一個錯誤:Promise is undefined
。這似乎是因爲webpack清單本身正在調用new Promise()
。
在我的主要入口點,我有import 'babel-polyfill';
。在我添加供應商&清單塊之前,這讓我克服了IE缺乏承諾。但是現在我首先加載了manifest.js,但我無法弄清楚如何以正確的順序包含它。
我的配置看起來像這樣:
module.exports = {
entry: {
legacy_libs: './app/libs.js',
main: './app/main.js'
},
...
plugins: [
// Extract third party libraries into a separate vendor bundle.
// Also extract webpack manifest into its own bundle (to prevent vendor hash changing when app source changes)
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks: function (module) {
return module.context && module.context.indexOf('node_modules') !== -1;
}
}),
new webpack.optimize.CommonsChunkPlugin({
name: 'manifest'
}),
// Generate index.html file.
// Include script bundles in the right order based on chunk name prefixes.
new HtmlWebpackPlugin({
template: 'app/index.ejs',
chunksSortMode: function (a, b) {
const chunkOrder = ['manifest', 'vendor', 'legacy_libs', 'main'];
const aChunk = chunkOrder.findIndex(chunk => a.names[0].startsWith(chunk));
const bChunk = chunkOrder.findIndex(chunk => b.names[0].startsWith(chunk));
const aValue = (aChunk > -1) ? aChunk : chunkOrder.length;
const bValue = (bChunk > -1) ? bChunk : chunkOrder.length;
return aValue - bValue;
}
})
}
非常感謝你@Sheeni!正如你所說,回到Webpack 2.5.1修復了這個問題,並且感謝你鏈接到Github上的問題,我會留意bug修復。 –