webpack 4 提供了 runtimeChunk
能让我们方便的提取 manifest
,以前我们需要这样配置1
2
3
4new webpack.optimize.CommonsChunkPlugin({
name: "manifest",
minChunks: Infinity
});
现在只要一行配置就可以了1
2
3{
runtimeChunk: true;
}
它的作用是将包含chunks 映射关系的 list
单独从 app.js
里提取出来,因为每一个 chunk 的 id 基本都是基于内容 hash 出来的,所以你每次改动都会影响它,如果不将它提取出来的话,等于app.js每次都会改变,导致缓存失效。
单独抽离 runtimeChunk
之后,每次打包都会生成一个runtimeChunk.xxx.js
,其实这个文件非常的小,gzip
之后一般只有几 kb
,但这个文件又经常会改变,我们每次都需要重新请求它,它的 http
耗时远大于它的执行时间了,所以建议不要将它单独拆包,而是将它内联到我们的 index.html
之中(index.html
本来每次打包都会变)。可以使用 inline-manifest-webpack-plugin
或者 assets-webpack-plugin
等来实现内联的效果。
1 | const InlineManifestWebpackPlugin = require("inline-manifest-webpack-plugin"); |