1
0
mirror of https://github.com/misskey-dev/misskey.git synced 2026-07-25 10:54:56 +02:00

fix(dev): clarify frontend chunk comparisons

This commit is contained in:
syuilo
2026-07-15 21:22:28 +09:00
parent 945fd40578
commit afca066833
2 changed files with 29 additions and 1 deletions

View File

@@ -414,6 +414,12 @@ function compareChunkComparisonRows(a: ReturnType<typeof getChunkComparisonRows>
|| a.name.localeCompare(b.name);
}
function chunkFileDisplay(row: ReturnType<typeof getChunkComparisonRows>[number]) {
if (row.beforeFile == null) return row.afterFile ?? '';
if (row.afterFile == null || row.beforeFile === row.afterFile) return row.beforeFile;
return `${row.beforeFile}${row.afterFile}`;
}
function chunkMarkdownTable(
rows: ReturnType<typeof getChunkComparisonRows>,
total?: { beforeSize: number; afterSize: number },
@@ -437,7 +443,7 @@ function chunkMarkdownTable(
if (hasSummaryRow && rows.length > 0) lines.push('| | | | | |');
for (const row of rows) {
const chunkFile = row.beforeFile ?? row.afterFile ?? '';
const chunkFile = chunkFileDisplay(row);
if (row.changeType === 'added') {
lines.push(`| <details><summary>\`${escapeCell(row.name)}\`</summary> \`${escapeCell(chunkFile)}\` </details> | ${util.formatBytes(row.beforeSize)} | ${util.formatBytes(row.afterSize)} | ${util.calcAndFormatDeltaBytes(row.beforeSize, row.afterSize, 1000)} | $\\color{orange}{\\text{( + )}}$ |`);
} else if (row.changeType === 'removed') {

View File

@@ -83,3 +83,25 @@ test('groups generated chunks while preserving full and startup totals', async t
assert.match(report, /<summary>`src\/_boot_\.ts`<\/summary>/);
assert.match(report, /<summary>`vue`<\/summary>/);
});
test('fails instead of overwriting duplicate stable chunk keys', async t => {
const duplicateVue = fixture('before', 'dist', { entry: 100, generatedA: 10, generatedB: 20, vue: 40, i18n: 50 });
duplicateVue.manifest._vueDuplicate = { file: 'scripts/vue-duplicate-before.js', name: 'vue' };
duplicateVue.sizes['scripts/vue-duplicate-before.js'] = 60;
await assert.rejects(
runReport(t, duplicateVue, fixture('after', 'esm', { entry: 110, generatedA: 30, generatedB: 40, vue: 45, i18n: 50 })),
/Duplicate stable chunk key "named:vue".*vue-before\.js.*vue-duplicate-before\.js/,
);
});
test('shows both filenames for an updated stable chunk', async t => {
const report = await runReport(
t,
fixture('before', 'dist', { entry: 100, generatedA: 10, generatedB: 20, vue: 40, i18n: 50 }),
fixture('after', 'esm', { entry: 110, generatedA: 30, generatedB: 40, vue: 45, i18n: 50 }),
);
assert.match(report, /`ja-JP\/entry-before\.js → ja-JP\/entry-after\.js`/);
assert.match(report, /`ja-JP\/vue-before\.js → ja-JP\/vue-after\.js`/);
});