summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.changeset/fifty-guests-remember.md5
-rw-r--r--packages/integrations/vercel/src/edge/adapter.ts5
-rw-r--r--packages/integrations/vercel/src/lib/env.ts15
-rw-r--r--packages/integrations/vercel/src/serverless/adapter.ts5
-rw-r--r--packages/integrations/vercel/src/static/adapter.ts5
5 files changed, 35 insertions, 0 deletions
diff --git a/.changeset/fifty-guests-remember.md b/.changeset/fifty-guests-remember.md
new file mode 100644
index 000000000..8adcf8afd
--- /dev/null
+++ b/.changeset/fifty-guests-remember.md
@@ -0,0 +1,5 @@
+---
+'@astrojs/vercel': patch
+---
+
+Correctly handle analytics id where present
diff --git a/packages/integrations/vercel/src/edge/adapter.ts b/packages/integrations/vercel/src/edge/adapter.ts
index 3570f5b61..308d57d2a 100644
--- a/packages/integrations/vercel/src/edge/adapter.ts
+++ b/packages/integrations/vercel/src/edge/adapter.ts
@@ -18,6 +18,7 @@ import {
writeJson,
} from '../lib/fs.js';
import { getRedirects } from '../lib/redirects.js';
+import { exposeEnv } from '../lib/env.js';
const PACKAGE_NAME = '@astrojs/vercel/edge';
@@ -55,6 +56,7 @@ export default function vercelEdge({
injectScript('page', 'import "@astrojs/vercel/analytics"');
}
const outDir = getVercelOutput(config.root);
+ const viteDefine = exposeEnv(['VERCEL_ANALYTICS_ID']);
updateConfig({
outDir,
build: {
@@ -62,6 +64,9 @@ export default function vercelEdge({
client: new URL('./static/', outDir),
server: new URL('./dist/', config.root),
},
+ vite: {
+ define: viteDefine,
+ },
...getImageConfig(imageService, imagesConfig, command),
});
},
diff --git a/packages/integrations/vercel/src/lib/env.ts b/packages/integrations/vercel/src/lib/env.ts
new file mode 100644
index 000000000..01d8c76a5
--- /dev/null
+++ b/packages/integrations/vercel/src/lib/env.ts
@@ -0,0 +1,15 @@
+/**
+ * While Vercel adds the `PUBLIC_` prefix for their `VERCEL_` env vars by default, some env vars
+ * like `VERCEL_ANALYTICS_ID` aren't, so handle them here so that it works correctly in runtime.
+ */
+export function exposeEnv(envs: string[]): Record<string, unknown> {
+ const mapped: Record<string, unknown> = {};
+
+ envs
+ .filter((env) => process.env[env])
+ .forEach((env) => {
+ mapped[`import.meta.env.PUBLIC_${env}`] = JSON.stringify(process.env[env]);
+ });
+
+ return mapped;
+}
diff --git a/packages/integrations/vercel/src/serverless/adapter.ts b/packages/integrations/vercel/src/serverless/adapter.ts
index 47d164519..f1a71bdbd 100644
--- a/packages/integrations/vercel/src/serverless/adapter.ts
+++ b/packages/integrations/vercel/src/serverless/adapter.ts
@@ -11,6 +11,7 @@ import {
import { getVercelOutput, removeDir, writeJson } from '../lib/fs.js';
import { copyDependenciesToFunction } from '../lib/nft.js';
import { getRedirects } from '../lib/redirects.js';
+import { exposeEnv } from '../lib/env.js';
const PACKAGE_NAME = '@astrojs/vercel/serverless';
@@ -50,6 +51,7 @@ export default function vercelServerless({
injectScript('page', 'import "@astrojs/vercel/analytics"');
}
const outDir = getVercelOutput(config.root);
+ const viteDefine = exposeEnv(['VERCEL_ANALYTICS_ID']);
updateConfig({
outDir,
build: {
@@ -57,6 +59,9 @@ export default function vercelServerless({
client: new URL('./static/', outDir),
server: new URL('./dist/', config.root),
},
+ vite: {
+ define: viteDefine,
+ },
...getImageConfig(imageService, imagesConfig, command),
});
},
diff --git a/packages/integrations/vercel/src/static/adapter.ts b/packages/integrations/vercel/src/static/adapter.ts
index 2aa489133..cd422787f 100644
--- a/packages/integrations/vercel/src/static/adapter.ts
+++ b/packages/integrations/vercel/src/static/adapter.ts
@@ -8,6 +8,7 @@ import {
} from '../image/shared.js';
import { emptyDir, getVercelOutput, writeJson } from '../lib/fs.js';
import { getRedirects } from '../lib/redirects.js';
+import { exposeEnv } from '../lib/env.js';
const PACKAGE_NAME = '@astrojs/vercel/static';
@@ -36,11 +37,15 @@ export default function vercelStatic({
injectScript('page', 'import "@astrojs/vercel/analytics"');
}
const outDir = new URL('./static/', getVercelOutput(config.root));
+ const viteDefine = exposeEnv(['VERCEL_ANALYTICS_ID']);
updateConfig({
outDir,
build: {
format: 'directory',
},
+ vite: {
+ define: viteDefine,
+ },
...getImageConfig(imageService, imagesConfig, command),
});
},