0
Fork 0
mirror of https://github.com/withastro/astro.git synced 2025-02-17 22:44:24 -05:00

Inject analytics env (#6876)

This commit is contained in:
Nathaniel Blackburn 2023-05-15 07:13:47 +01:00 committed by GitHub
parent a1bac1d5b6
commit 06ca3702f8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 35 additions and 0 deletions

View file

@ -0,0 +1,5 @@
---
'@astrojs/vercel': patch
---
Correctly handle analytics id where present

View file

@ -18,6 +18,7 @@ import {
writeJson, writeJson,
} from '../lib/fs.js'; } from '../lib/fs.js';
import { getRedirects } from '../lib/redirects.js'; import { getRedirects } from '../lib/redirects.js';
import { exposeEnv } from '../lib/env.js';
const PACKAGE_NAME = '@astrojs/vercel/edge'; const PACKAGE_NAME = '@astrojs/vercel/edge';
@ -55,6 +56,7 @@ export default function vercelEdge({
injectScript('page', 'import "@astrojs/vercel/analytics"'); injectScript('page', 'import "@astrojs/vercel/analytics"');
} }
const outDir = getVercelOutput(config.root); const outDir = getVercelOutput(config.root);
const viteDefine = exposeEnv(['VERCEL_ANALYTICS_ID']);
updateConfig({ updateConfig({
outDir, outDir,
build: { build: {
@ -62,6 +64,9 @@ export default function vercelEdge({
client: new URL('./static/', outDir), client: new URL('./static/', outDir),
server: new URL('./dist/', config.root), server: new URL('./dist/', config.root),
}, },
vite: {
define: viteDefine,
},
...getImageConfig(imageService, imagesConfig, command), ...getImageConfig(imageService, imagesConfig, command),
}); });
}, },

View file

@ -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;
}

View file

@ -11,6 +11,7 @@ import {
import { getVercelOutput, removeDir, writeJson } from '../lib/fs.js'; import { getVercelOutput, removeDir, writeJson } from '../lib/fs.js';
import { copyDependenciesToFunction } from '../lib/nft.js'; import { copyDependenciesToFunction } from '../lib/nft.js';
import { getRedirects } from '../lib/redirects.js'; import { getRedirects } from '../lib/redirects.js';
import { exposeEnv } from '../lib/env.js';
const PACKAGE_NAME = '@astrojs/vercel/serverless'; const PACKAGE_NAME = '@astrojs/vercel/serverless';
@ -50,6 +51,7 @@ export default function vercelServerless({
injectScript('page', 'import "@astrojs/vercel/analytics"'); injectScript('page', 'import "@astrojs/vercel/analytics"');
} }
const outDir = getVercelOutput(config.root); const outDir = getVercelOutput(config.root);
const viteDefine = exposeEnv(['VERCEL_ANALYTICS_ID']);
updateConfig({ updateConfig({
outDir, outDir,
build: { build: {
@ -57,6 +59,9 @@ export default function vercelServerless({
client: new URL('./static/', outDir), client: new URL('./static/', outDir),
server: new URL('./dist/', config.root), server: new URL('./dist/', config.root),
}, },
vite: {
define: viteDefine,
},
...getImageConfig(imageService, imagesConfig, command), ...getImageConfig(imageService, imagesConfig, command),
}); });
}, },

View file

@ -8,6 +8,7 @@ import {
} from '../image/shared.js'; } from '../image/shared.js';
import { emptyDir, getVercelOutput, writeJson } from '../lib/fs.js'; import { emptyDir, getVercelOutput, writeJson } from '../lib/fs.js';
import { getRedirects } from '../lib/redirects.js'; import { getRedirects } from '../lib/redirects.js';
import { exposeEnv } from '../lib/env.js';
const PACKAGE_NAME = '@astrojs/vercel/static'; const PACKAGE_NAME = '@astrojs/vercel/static';
@ -36,11 +37,15 @@ export default function vercelStatic({
injectScript('page', 'import "@astrojs/vercel/analytics"'); injectScript('page', 'import "@astrojs/vercel/analytics"');
} }
const outDir = new URL('./static/', getVercelOutput(config.root)); const outDir = new URL('./static/', getVercelOutput(config.root));
const viteDefine = exposeEnv(['VERCEL_ANALYTICS_ID']);
updateConfig({ updateConfig({
outDir, outDir,
build: { build: {
format: 'directory', format: 'directory',
}, },
vite: {
define: viteDefine,
},
...getImageConfig(imageService, imagesConfig, command), ...getImageConfig(imageService, imagesConfig, command),
}); });
}, },