Файл stats.json
, созданный Webpack, расположен таким образом, что один или modules
составляют chunk
, а один или несколько кусков составляют asset
.
Я пытаюсь вычислить размер актива, суммируя размеры модулей, которые (составляют куски) составляют актив. В приведенном ниже фрагменте вы можете предположить, что jsonContents
- это весь файл statpack.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
- отличный инструмент, однако я хочу создать короткий отчет изменений и не нужно тратить время на анализ пользовательского интерфейса)