一、chunk
这个词应该可以翻译成“代码块”
正常情况下,以entry指定的文件为入口,将入口文件及其依赖打包成一个bundle文件,
然而有些情况下,部分功能是在使用时才会用到的,出于性能优化的需要,我们对这部分功能做成按需加载,这部分的功能将被打包到chunk文件。
用法:
require.ensure([], function(require){
var moduleA = require("./a");
});
公共模块提取:
var chunks = Object.keys(entries);
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: 'vendors', //将公共模块提取,生成名为‘verdors’的chunk
chunks: chunks, //文件名数组
minChunks: chunks.length //提取所有entry共同依赖的模块
]
可用getCommonsChunk来获取chunks:
var glob = require('glob');
var chunks= getCommonsChunk('src/js/page/**/*.js', 'src/js/page/');
function getCommonsChunk(globPath, pathDir) {
var files = glob.sync(globPath);
var entries = [],
entry, dirname, basename, extname;
for (var i = 0; i < files.length; i++) {
entry = files[i];
dirname = path.dirname(entry);
extname = path.extname(entry);
basename = path.basename(entry, extname);
entries.push(basename);
}
return entries;
}
网友评论