Skip to content

Commit 7526c65

Browse files
committed
Compare baseline to current metadata
1 parent 948ec7c commit 7526c65

File tree

1 file changed

+37
-8
lines changed

1 file changed

+37
-8
lines changed

pr-checks/bundle-metadata.ts

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -121,17 +121,46 @@ async function main() {
121121
const fileContents = await fs.readFile(BUNDLE_METADATA_FILE);
122122
const metadata = JSON.parse(String(fileContents)) as Metadata;
123123

124+
console.info("Comparing bundle metadata to baseline...");
125+
126+
const filesInBaseline = new Set(Object.keys(baselineMetadata.outputs));
127+
const filesInCurrent = new Set(Object.keys(metadata.outputs));
128+
129+
const filesNotPresent = filesInBaseline.difference(filesInCurrent);
130+
if (filesNotPresent.size > 0) {
131+
console.info(`Found ${filesNotPresent.size} file(s) which were removed:`);
132+
for (const removedFile of filesNotPresent) {
133+
console.info(` - ${removedFile}`);
134+
}
135+
}
136+
124137
for (const [outputFile, outputData] of Object.entries(
125138
metadata.outputs,
126139
).reverse()) {
127-
console.info(`${outputFile}: ${toMB(outputData.bytes)}`);
128-
129-
for (const [inputName, inputData] of Object.entries(outputData.inputs)) {
130-
// Ignore any inputs that make up less than 5% of the output.
131-
const percentage = (inputData.bytesInOutput / outputData.bytes) * 100.0;
132-
if (percentage < 5.0) continue;
133-
134-
console.info(` ${inputName}: ${toMB(inputData.bytesInOutput)}`);
140+
const baselineOutputData = baselineMetadata.outputs[outputFile];
141+
142+
if (baselineOutputData === undefined) {
143+
console.info(`${outputFile}: New file (${toMB(outputData.bytes)})`);
144+
} else {
145+
const percentageDifference =
146+
100.0 - (baselineOutputData.bytes / outputData.bytes) * 100.0;
147+
148+
if (Math.abs(percentageDifference) >= 5) {
149+
console.info(
150+
`${outputFile}: ${toMB(outputData.bytes)} (${percentageDifference}%)`,
151+
);
152+
153+
for (const [inputName, inputData] of Object.entries(
154+
outputData.inputs,
155+
)) {
156+
// Ignore any inputs that make up less than 5% of the output.
157+
const percentage =
158+
(inputData.bytesInOutput / outputData.bytes) * 100.0;
159+
if (percentage < 5.0) continue;
160+
161+
console.info(` ${inputName}: ${toMB(inputData.bytesInOutput)}`);
162+
}
163+
}
135164
}
136165
}
137166
}

0 commit comments

Comments
 (0)