summaryrefslogtreecommitdiff
path: root/packages/integrations/vercel/src
diff options
context:
space:
mode:
authorGravatar Matt Kane <m@mk.gg> 2025-03-03 14:32:04 +0000
committerGravatar GitHub <noreply@github.com> 2025-03-03 14:32:04 +0000
commitfac32ad98d66b73382f35d26a69352e566cd94d9 (patch)
treef0cff234e33a2d9afd69b5f605b579d5a417df52 /packages/integrations/vercel/src
parent21c233c3c9398aa3dbdfb612391617ef31a6ea63 (diff)
downloadastro-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.ts14
-rw-r--r--packages/integrations/vercel/src/index.ts1
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,
),
});
},