Skip to content

Commit 2ab95cc

Browse files
committed
Compare baseline to current metadata
1 parent af6b899 commit 2ab95cc

File tree

1 file changed

+39
-8
lines changed

1 file changed

+39
-8
lines changed

pr-checks/bundle-metadata.ts

Lines changed: 39 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -135,17 +135,48 @@ async function main() {
135135
const fileContents = await fs.readFile(BUNDLE_METADATA_FILE);
136136
const metadata = JSON.parse(String(fileContents)) as Metadata;
137137

138+
console.info("Comparing bundle metadata to baseline...");
139+
140+
const filesInBaseline = new Set(Object.keys(baselineMetadata.outputs));
141+
const filesInCurrent = new Set(Object.keys(metadata.outputs));
142+
143+
const filesNotPresent = filesInBaseline.difference(filesInCurrent);
144+
if (filesNotPresent.size > 0) {
145+
console.info(`Found ${filesNotPresent.size} file(s) which were removed:`);
146+
for (const removedFile of filesNotPresent) {
147+
console.info(` - ${removedFile}`);
148+
}
149+
}
150+
138151
for (const [outputFile, outputData] of Object.entries(
139152
metadata.outputs,
140153
).reverse()) {
141-
console.info(`${outputFile}: ${toMB(outputData.bytes)}`);
142-
143-
for (const [inputName, inputData] of Object.entries(outputData.inputs)) {
144-
// Ignore any inputs that make up less than 5% of the output.
145-
const percentage = (inputData.bytesInOutput / outputData.bytes) * 100.0;
146-
if (percentage < 5.0) continue;
147-
148-
console.info(` ${inputName}: ${toMB(inputData.bytesInOutput)}`);
154+
const baselineOutputData = baselineMetadata.outputs[outputFile];
155+
156+
if (baselineOutputData === undefined) {
157+
console.info(`${outputFile}: New file (${toMB(outputData.bytes)})`);
158+
} else {
159+
const percentageDifference =
160+
((outputData.bytes - baselineOutputData.bytes) /
161+
baselineOutputData.bytes) *
162+
100.0;
163+
164+
if (Math.abs(percentageDifference) >= 5) {
165+
console.info(
166+
`${outputFile}: ${toMB(outputData.bytes)} (${percentageDifference.toFixed(2)}%)`,
167+
);
168+
169+
for (const [inputName, inputData] of Object.entries(
170+
outputData.inputs,
171+
)) {
172+
// Ignore any inputs that make up less than 5% of the output.
173+
const percentage =
174+
(inputData.bytesInOutput / outputData.bytes) * 100.0;
175+
if (percentage < 5.0) continue;
176+
177+
console.info(` ${inputName}: ${toMB(inputData.bytesInOutput)}`);
178+
}
179+
}
149180
}
150181
}
151182
}

0 commit comments

Comments
 (0)