summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Bjorn Lu <bjornlu.dev@gmail.com> 2023-07-17 20:57:27 +0800
committerGravatar GitHub <noreply@github.com> 2023-07-17 20:57:27 +0800
commit1f0d0b5863750104fc93cbbbd54ebae9c65143f7 (patch)
tree4b440b7f5ea778bd4449229ebce471185dd9b175
parent1a6f833c404ba2e64e3497929b64c863b5a348c8 (diff)
downloadastro-1f0d0b5863750104fc93cbbbd54ebae9c65143f7.tar.gz
astro-1f0d0b5863750104fc93cbbbd54ebae9c65143f7.tar.zst
astro-1f0d0b5863750104fc93cbbbd54ebae9c65143f7.zip
Fix vercel build error when passing `includeFiles` (#7677)
-rw-r--r--.changeset/six-baboons-allow.md5
-rw-r--r--packages/integrations/vercel/src/serverless/adapter.ts10
-rw-r--r--packages/integrations/vercel/test/fixtures/serverless-prerender/astro.config.mjs5
-rw-r--r--packages/integrations/vercel/test/fixtures/serverless-prerender/included.js1
-rw-r--r--packages/integrations/vercel/test/serverless-prerender.test.js12
5 files changed, 26 insertions, 7 deletions
diff --git a/.changeset/six-baboons-allow.md b/.changeset/six-baboons-allow.md
new file mode 100644
index 000000000..e55e044e3
--- /dev/null
+++ b/.changeset/six-baboons-allow.md
@@ -0,0 +1,5 @@
+---
+'@astrojs/vercel': patch
+---
+
+Fix build error when passing `includeFiles`
diff --git a/packages/integrations/vercel/src/serverless/adapter.ts b/packages/integrations/vercel/src/serverless/adapter.ts
index e44aa3f07..592f3618f 100644
--- a/packages/integrations/vercel/src/serverless/adapter.ts
+++ b/packages/integrations/vercel/src/serverless/adapter.ts
@@ -47,6 +47,8 @@ export default function vercelServerless({
let buildTempFolder: URL;
let serverEntry: string;
let _entryPoints: Map<RouteData, URL>;
+ // Extra files to be merged with `includeFiles` during build
+ const extraFilesToInclude: URL[] = [];
async function createFunctionFolder(funcName: string, entry: URL, inc: URL[]) {
const functionFolder = new URL(`./functions/${funcName}.func/`, _config.outDir);
@@ -74,8 +76,6 @@ export default function vercelServerless({
});
}
- const filesToInclude = includeFiles?.map((file) => new URL(file, _config.root)) || [];
-
return {
name: PACKAGE_NAME,
hooks: {
@@ -130,7 +130,7 @@ export default function vercelServerless({
vercelEdgeMiddlewareHandlerPath
);
// let's tell the adapter that we need to save this file
- filesToInclude.push(bundledMiddlewarePath);
+ extraFilesToInclude.push(bundledMiddlewarePath);
}
},
@@ -140,7 +140,7 @@ export default function vercelServerless({
const mergeGlobbedIncludes = (globPattern: unknown) => {
if (typeof globPattern === 'string') {
const entries = glob.sync(globPattern).map((p) => pathToFileURL(p));
- filesToInclude.push(...entries);
+ extraFilesToInclude.push(...entries);
} else if (Array.isArray(globPattern)) {
for (const pattern of globPattern) {
mergeGlobbedIncludes(pattern);
@@ -152,6 +152,8 @@ export default function vercelServerless({
}
const routeDefinitions: { src: string; dest: string }[] = [];
+ const filesToInclude = includeFiles?.map((file) => new URL(file, _config.root)) || [];
+ filesToInclude.push(...extraFilesToInclude);
// Multiple entrypoint support
if (_entryPoints.size) {
diff --git a/packages/integrations/vercel/test/fixtures/serverless-prerender/astro.config.mjs b/packages/integrations/vercel/test/fixtures/serverless-prerender/astro.config.mjs
index 03228c5df..84b96c27d 100644
--- a/packages/integrations/vercel/test/fixtures/serverless-prerender/astro.config.mjs
+++ b/packages/integrations/vercel/test/fixtures/serverless-prerender/astro.config.mjs
@@ -2,6 +2,9 @@ import { defineConfig } from 'astro/config';
import vercel from '@astrojs/vercel/serverless';
export default defineConfig({
- adapter: vercel(),
+ adapter: vercel({
+ // Pass some value to make sure it doesn't error out
+ includeFiles: ['included.js']
+ }),
output: 'server'
});
diff --git a/packages/integrations/vercel/test/fixtures/serverless-prerender/included.js b/packages/integrations/vercel/test/fixtures/serverless-prerender/included.js
new file mode 100644
index 000000000..4e64b2d61
--- /dev/null
+++ b/packages/integrations/vercel/test/fixtures/serverless-prerender/included.js
@@ -0,0 +1 @@
+'works' \ No newline at end of file
diff --git a/packages/integrations/vercel/test/serverless-prerender.test.js b/packages/integrations/vercel/test/serverless-prerender.test.js
index 18b165340..292e92b69 100644
--- a/packages/integrations/vercel/test/serverless-prerender.test.js
+++ b/packages/integrations/vercel/test/serverless-prerender.test.js
@@ -10,12 +10,20 @@ describe('Serverless prerender', () => {
fixture = await loadFixture({
root: './fixtures/serverless-prerender/',
});
+ await fixture.build();
});
it('build successful', async () => {
- await fixture.build();
expect(await fixture.readFile('../.vercel/output/static/index.html')).to.be.ok;
});
+
+ it('includeFiles work', async () => {
+ expect(
+ await fixture.readFile(
+ '../.vercel/output/functions/render.func/packages/integrations/vercel/test/fixtures/serverless-prerender/included.js'
+ )
+ ).to.be.ok;
+ });
});
describe('Serverless hybrid rendering', () => {
@@ -28,10 +36,10 @@ describe('Serverless hybrid rendering', () => {
root: './fixtures/serverless-prerender/',
output: 'hybrid',
});
+ await fixture.build();
});
it('build successful', async () => {
- await fixture.build();
expect(await fixture.readFile('../.vercel/output/static/index.html')).to.be.ok;
});
});