From 3fe04ebec19d1d2f490df373a102cbd265a1c658 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Thu, 23 Jan 2025 11:13:45 +0000 Subject: [PATCH] fix(vercel): handle integration static assets in non-static sites (#516) * fix: arrange assets for server output too * Changeset * Format --- .changeset/loud-snails-float.md | 5 +++++ packages/vercel/src/index.ts | 14 ++++++-------- packages/vercel/test/integration-assets.test.js | 16 ++++++++++------ 3 files changed, 21 insertions(+), 14 deletions(-) create mode 100644 .changeset/loud-snails-float.md diff --git a/.changeset/loud-snails-float.md b/.changeset/loud-snails-float.md new file mode 100644 index 000000000..0234de266 --- /dev/null +++ b/.changeset/loud-snails-float.md @@ -0,0 +1,5 @@ +--- +'@astrojs/vercel': patch +--- + +Fixes a bug that prevented integration-generated static assets from being deployed with non-static sites diff --git a/packages/vercel/src/index.ts b/packages/vercel/src/index.ts index af2ede2f2..6b46512ec 100644 --- a/packages/vercel/src/index.ts +++ b/packages/vercel/src/index.ts @@ -220,11 +220,12 @@ export default function vercelAdapter({ name: 'astro:copy-vercel-output', hooks: { 'astro:build:done': async () => { - if (_buildOutput === 'static') { - cpSync(_config.outDir, new URL('./.vercel/output/static/', _config.root), { - recursive: true, - }); - } + logger.info('Copying static files to .vercel/output/static'); + const staticDir = + _buildOutput === 'static' ? _config.outDir : _config.build.client; + cpSync(staticDir, new URL('./.vercel/output/static/', _config.root), { + recursive: true, + }); }, }, }, @@ -329,9 +330,6 @@ export default function vercelAdapter({ mkdirSync(new URL('./.vercel/output/server/', _config.root)); if (_buildOutput !== 'static') { - cpSync(_config.build.client, new URL('./.vercel/output/static/', _config.root), { - recursive: true, - }); cpSync(_config.build.server, new URL('./.vercel/output/_functions/', _config.root), { recursive: true, }); diff --git a/packages/vercel/test/integration-assets.test.js b/packages/vercel/test/integration-assets.test.js index 76489974c..6bf8edc4e 100644 --- a/packages/vercel/test/integration-assets.test.js +++ b/packages/vercel/test/integration-assets.test.js @@ -3,17 +3,21 @@ import { before, describe, it } from 'node:test'; import { loadFixture } from './test-utils.js'; describe('Assets generated by integrations', () => { - /** @type {import('./test-utils.js').Fixture} */ - let fixture; - - before(async () => { - fixture = await loadFixture({ + it('moves static assets generated by integrations to the correct location: static output', async () => { + const fixture = await loadFixture({ root: './fixtures/integration-assets/', }); await fixture.build(); + const sitemap = await fixture.readFile('../.vercel/output/static/sitemap-index.xml'); + assert(sitemap.includes('')); }); - it('moves static assets generated by integrations to the correct location', async () => { + it('moves static assets generated by integrations to the correct location: server output', async () => { + const fixture = await loadFixture({ + root: './fixtures/integration-assets/', + output: 'server', + }); + await fixture.build(); const sitemap = await fixture.readFile('../.vercel/output/static/sitemap-index.xml'); assert(sitemap.includes('')); });