探寻 webpack_bundle_analyzer 原理

释放双眼,带上耳机,听听看~!

webpack_bundle_analyzer 是什么?

这是webpack官方出品的,对项目中模块依赖关系及体积的分析插件,其界面如下:

探寻 webpack_bundle_analyzer 原理

问题来了,这是如何来进行统计的?

这里提供一个插件的代码,可以观察到里面的 json 结构。

var fs = require(\'fs\');
var path = require(\'path\');

function FunctionFinder() {};

FunctionFinder.prototype.apply = function (compiler) {
    compiler.plugin(\'emit\', function (compilation) {
        compiler.plugin(\'done\', function(stats){
            
            let json = stats.toJson({
                timings: false,
                cached: false,
                errors: false,
                errorDetails: false,
                warning: false
            });

            fs.writeFile(path.resolve(`./1.json`) , JSON.stringify(json.chunks[1]), function (err) {
                if (err) {
                    console.log(err);
                } else {
                    console.log(\'ok.\');
                }
            });
        });
    });
};

module.exports = FunctionFinder;

 

代码中的 stats 是一个巨大的对象,里面包含 chunks,也就是 webpack 分块之后的文件模块,如果项目比较大的话,直接输出 json 可能会报内存溢出,此时可以分批写入文件或者写入不同文件。

上面代码中,只是将 chunks 数组里下标为1的 chunk 到 1.json 中,最终格式化后,可以看到:

探寻 webpack_bundle_analyzer 原理

 

基本就是类似这样的 json 结构,从里面可以看到依赖关系,文件尺寸等。

看到这里,是否已经清楚 webpack_bundle_analyzer 的原理了呢?

更为深入的部分,可以直接去看源代码,这里只做简单介绍。

给TA打赏
共{{data.count}}人
人已打赏
随笔日记

Appium+python自动化(十九)- 猴哥失散多年的混血弟弟还是妹妹- Monkey(猴子)参数(超详解)

2020-11-9 5:53:33

随笔日记

RSYNC部署

2020-11-9 5:53:35

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索