diff options
author | 2025-03-03 14:32:04 +0000 | |
---|---|---|
committer | 2025-03-03 14:32:04 +0000 | |
commit | fac32ad98d66b73382f35d26a69352e566cd94d9 (patch) | |
tree | f0cff234e33a2d9afd69b5f605b579d5a417df52 /packages/integrations/vercel/src | |
parent | 21c233c3c9398aa3dbdfb612391617ef31a6ea63 (diff) | |
download | astro-fac32ad98d66b73382f35d26a69352e566cd94d9.tar.gz astro-fac32ad98d66b73382f35d26a69352e566cd94d9.tar.zst astro-fac32ad98d66b73382f35d26a69352e566cd94d9.zip |
fix: generate correct responsive srcsets on Vercel (#13351)
* fix: generate correct responsive srcsets on Vercel
* [skipci] Apply suggestions from code review
Co-authored-by: Emanuele Stoppa <my.burning@gmail.com>
---------
Co-authored-by: Emanuele Stoppa <my.burning@gmail.com>
Diffstat (limited to 'packages/integrations/vercel/src')
-rw-r--r-- | packages/integrations/vercel/src/image/shared.ts | 14 | ||||
-rw-r--r-- | packages/integrations/vercel/src/index.ts | 1 |
2 files changed, 14 insertions, 1 deletions
diff --git a/packages/integrations/vercel/src/image/shared.ts b/packages/integrations/vercel/src/image/shared.ts index eb9681243..52c319417 100644 --- a/packages/integrations/vercel/src/image/shared.ts +++ b/packages/integrations/vercel/src/image/shared.ts @@ -69,6 +69,7 @@ export function getAstroImageConfig( command: string, devImageService: DevImageService, astroImageConfig: AstroConfig['image'], + responsiveImages?: boolean, ) { let devService = '@astrojs/vercel/dev-image-service'; @@ -86,12 +87,14 @@ export function getAstroImageConfig( } if (images) { + const config = imagesConfig ? imagesConfig : getDefaultImageConfig(astroImageConfig); return { image: { service: { entrypoint: command === 'dev' ? devService : '@astrojs/vercel/build-image-service', - config: imagesConfig ? imagesConfig : getDefaultImageConfig(astroImageConfig), + config, }, + experimentalBreakpoints: responsiveImages ? config.sizes : undefined, }, }; } @@ -151,6 +154,15 @@ export function sharedValidateOptions( } } + if (options.widths) { + // Vercel only supports a fixed set of widths, so remove any that aren't in the list + options.widths = options.widths.filter((w) => configuredWidths.includes(w)); + // Oh no, we've removed all the widths! Let's add the nearest one back in + if (options.widths.length === 0) { + options.widths = [options.width]; + } + } + if (options.quality && typeof options.quality === 'string') { options.quality = options.quality in qualityTable ? qualityTable[options.quality] : undefined; } diff --git a/packages/integrations/vercel/src/index.ts b/packages/integrations/vercel/src/index.ts index 9db18f95b..d382ed766 100644 --- a/packages/integrations/vercel/src/index.ts +++ b/packages/integrations/vercel/src/index.ts @@ -241,6 +241,7 @@ export default function vercelAdapter({ command, devImageService, config.image, + config.experimental.responsiveImages, ), }); }, |