summaryrefslogtreecommitdiff
path: root/packages/integrations/image/src/vite-plugin-astro-image.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/integrations/image/src/vite-plugin-astro-image.ts')
-rw-r--r--packages/integrations/image/src/vite-plugin-astro-image.ts21
1 files changed, 21 insertions, 0 deletions
diff --git a/packages/integrations/image/src/vite-plugin-astro-image.ts b/packages/integrations/image/src/vite-plugin-astro-image.ts
index 04f230341..ee06b0d5c 100644
--- a/packages/integrations/image/src/vite-plugin-astro-image.ts
+++ b/packages/integrations/image/src/vite-plugin-astro-image.ts
@@ -113,6 +113,27 @@ export function createPlugin(config: AstroConfig, options: Required<IntegrationO
return next();
});
},
+ outputOptions(outputOptions) {
+ if(resolvedConfig.build.ssr) {
+ // Build the image-pool chunk to the top-level and not inside of a chunks/
+ // folder. This is because the wasm is built at the top-level and this makes
+ // it accessible from the pool worker.
+ const chunkFileNames = outputOptions.chunkFileNames;
+ outputOptions.chunkFileNames = (chunk) => {
+ for(const name of Object.keys(chunk.modules)) {
+ if(name.endsWith('vendor/squoosh/image-pool.js')) {
+ return '[name].[hash].mjs';
+ }
+ }
+
+ if(typeof chunkFileNames === 'function') {
+ return chunkFileNames.call(this, chunk);
+ }
+
+ return chunkFileNames!;
+ };
+ }
+ },
async renderChunk(code) {
const assetUrlRE = /__ASTRO_IMAGE_ASSET__([a-z\d]{8})__(?:_(.*?)__)?/g;