Вычисление размера ресурса из размеров модуля в файле статистики веб-пакета

stats.json Файл, созданный Webpack, уложен так, что один или modules составить chunk и один или несколько кусков составляют asset,

Я пытаюсь вычислить размер актива, суммируя размеры модулей, которые (составляют части), которые составляют актив. В приведенном ниже фрагменте вы можете предположить, что jsonContents весь файл webpack stats.json, chunkToModulesDict это словарь, который говорит, что модули, которые составляют чанк, и moduleSizeDict словарь имен модулей с соответствующими им размерами

function createAssetSizeDictWithoutDuplicates(jsonContents, chunkToModulesDict, moduleSizeDict){
    var assets = jsonContents.assets;
    var assetsSize = [];

    for(i = 0;i<assets.length;i++){
        var asset = assets[i];
        var size = 0;

        var modulesUsedByAsset = [];

        var chunksUsedByAsset = asset.chunks;
        for(j=0;j<chunksUsedByAsset.length;j++){
            var chunkId = chunksUsedByAsset[j];

            for(k=0;k<chunkToModulesDict[chunkId].length;k++){
                if(modulesUsedByAsset.indexOf(chunkToModulesDict[chunkId][k]) < 0){
                    modulesUsedByAsset.push(chunkToModulesDict[chunkId][k]);
                    size += moduleSizeDict[chunkToModulesDict[chunkId][k]];
                }   
            }
        }

        assetsSize[i] = size;
    }

    return assetsSize;
}

Я заметил, что размер актива, указанный в файле статистики, не соответствует размеру актива, рассчитанному, как указано выше. Однако при построении расчетных размеров активов относительно размеров активов, указанных в файле stats.json, я вижу, что графики имеют похожую форму.

Я подтвердил свою гипотезу о том, что вычисленные и сообщенные значения сильно коррелированы.

У меня вопрос: как я могу более точно вычислить размеры активов из модулей, чтобы численно рассчитанные размеры соответствовали размеру, указанному в файле статистики. Я пытаюсь сравнить два файла статистики и понять, какие активы изменились по размеру и какие модули внесли вклад в эти изменения. (webpack-bundle-analyzer это отличный инструмент, однако я хочу создать краткий отчет об изменениях и не тратить время на анализ пользовательского интерфейса)

0 ответов

Другие вопросы по тегам