class BundleInfoPlugin {
constructor(options) {
this.options = options || {};
}
apply(compiler) {
compiler.hooks.emit.tapAsync(
'BundleInfoPlugin',
(compilation, callback) => {
let result = {};
for (let filename in compilation.assets) {
let size = compilation.assets[filename].size();
result[filename] = size;
}
let jsonResult = JSON.stringify(result, null, 2);
compilation.assets['bundle_info.json'] = {
source: function () {
return jsonResult;
},
size: function () {
return jsonResult.length;
},
};
callback();
}
);
}
}
module.exports = BundleInfoPlugin;