Config files
package.json
{
"name": "my-new-site",
"type": "module",
"version": "0.0.1",
"scripts": {
"dev": "astro dev",
"build": "astro build",
"preview": "astro preview"
},
"dependencies": {
"@guides/ui": "workspace:*",
"@guides/workers": "workspace:*",
"astro": "^5.7.0"
},
"devDependencies": {
"@cloudflare/workers-types": "^4.20240529.0"
}
}
astro.config.mjs
import { defineConfig } from 'astro/config';
import { createSitemap } from '@guides/ui/sitemap';
export default defineConfig({
output: 'static',
site: 'https://my-new-site.pages.dev',
integrations: [createSitemap()],
vite: {
ssr: { noExternal: ['@guides/ui'] },
},
});
wrangler.toml
name = "my-new-site"
pages_build_output_dir = "dist"
compatibility_date = "2024-09-23"
tsconfig.json
{
"extends": "astro/tsconfigs/base",
"compilerOptions": {
"types": ["@cloudflare/workers-types"]
}
}
functions/api/contact.ts
import type { EventContext } from '@cloudflare/workers-types';
import { handleContactForm } from '@guides/workers/contact';
export const onRequestPost = (
context: EventContext<Record<string, unknown>, string, Record<string, unknown>>
) => handleContactForm(context.request);