Skip to content

Commit 6b1e798

Browse files
feat: add progress to asset generation (#8357)
1 parent b74dacd commit 6b1e798

File tree

3 files changed

+24
-14
lines changed

3 files changed

+24
-14
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'astro': patch
3+
---
4+
5+
Added counter to show progress for assets image generation.
6+
Fixed small unit of measurement error.

packages/astro/src/assets/build/generate.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -155,12 +155,12 @@ export async function generateImage(
155155
};
156156
}
157157

158-
export function getStaticImageList(): Iterable<
159-
[string, { path: string; options: ImageTransform }]
158+
export function getStaticImageList(): Map<
159+
string, { path: string; options: ImageTransform }
160160
> {
161161
if (!globalThis?.astroAsset?.staticImages) {
162-
return [];
162+
return new Map();
163163
}
164164

165-
return globalThis.astroAsset.staticImages?.entries();
165+
return globalThis.astroAsset.staticImages;
166166
}

packages/astro/src/core/build/generate.ts

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -196,9 +196,12 @@ export async function generatePages(opts: StaticBuildOptions, internals: BuildIn
196196
}
197197
}
198198

199-
logger.info(null, `\n${bgGreen(black(` generating optimized images `))}`);
200-
for (const imageData of getStaticImageList()) {
201-
await generateImage(pipeline, imageData[1].options, imageData[1].path);
199+
const staticImageList = getStaticImageList()
200+
201+
if (staticImageList.size) logger.info(null, `\n${bgGreen(black(` generating optimized images `))}`); let count = 0;
202+
for (const imageData of staticImageList.entries()) {
203+
count++
204+
await generateImage(pipeline, imageData[1].options, imageData[1].path, count, staticImageList.size);
202205
}
203206

204207
delete globalThis?.astroAsset?.addStaticImage;
@@ -211,7 +214,7 @@ export async function generatePages(opts: StaticBuildOptions, internals: BuildIn
211214
logger.info(null, dim(`Completed in ${getTimeStat(timer, performance.now())}.\n`));
212215
}
213216

214-
async function generateImage(pipeline: BuildPipeline, transform: ImageTransform, path: string) {
217+
async function generateImage(pipeline: BuildPipeline, transform: ImageTransform, path: string, count: number, totalCount: number) {
215218
const logger = pipeline.getLogger();
216219
let timeStart = performance.now();
217220
const generationData = await generateImageInternal(pipeline, transform, path);
@@ -225,8 +228,9 @@ async function generateImage(pipeline: BuildPipeline, transform: ImageTransform,
225228
const timeIncrease = `(+${timeChange})`;
226229
const statsText = generationData.cached
227230
? `(reused cache entry)`
228-
: `(before: ${generationData.weight.before}kb, after: ${generationData.weight.after}kb)`;
229-
logger.info(null, ` ${green('▶')} ${path} ${dim(statsText)} ${dim(timeIncrease)}`);
231+
: `(before: ${generationData.weight.before}kB, after: ${generationData.weight.after}kB)`;
232+
const counter = `(${count}/${totalCount})`;
233+
logger.info(null, ` ${green('▶')} ${path} ${dim(statsText)} ${dim(timeIncrease)} ${dim(counter)}}`);
230234
}
231235

232236
async function generatePage(
@@ -390,10 +394,10 @@ function getInvalidRouteSegmentError(
390394
...AstroErrorData.InvalidDynamicRoute,
391395
message: invalidParam
392396
? AstroErrorData.InvalidDynamicRoute.message(
393-
route.route,
394-
JSON.stringify(invalidParam),
395-
JSON.stringify(received)
396-
)
397+
route.route,
398+
JSON.stringify(invalidParam),
399+
JSON.stringify(received)
400+
)
397401
: `Generated path for ${route.route} is invalid.`,
398402
hint,
399403
});

0 commit comments

Comments
 (0)