Installation
Install the required dependencies:Configuration
import { vitePreprocess } from "@sveltejs/vite-plugin-svelte";
import alchemy from "alchemy/cloudflare/sveltekit";
const config = {
preprocess: vitePreprocess(),
kit: {
adapter: alchemy(),
},
};
export default config;
import alchemy from "alchemy";
import { D1Database, KVNamespace, R2Bucket, SvelteKit } from "alchemy/cloudflare";
const app = await alchemy("my-sveltekit-app");
const [db, authStore, storage] = await Promise.all([
D1Database("database", {
name: `${app.name}-${app.stage}-db`,
}),
KVNamespace("auth-store", {
title: `${app.name}-${app.stage}-auth-store`,
}),
R2Bucket("storage", {
name: `${app.name}-${app.stage}-storage`,
}),
]);
const website = await SvelteKit("website", {
bindings: {
DB: db,
AUTH_STORE: authStore,
STORAGE: storage,
API_KEY: alchemy.secret.env.API_KEY,
},
});
console.log({
url: website.url,
});
await app.finalize();
Configuration Options
Properties
bindings: Cloudflare bindings (KV, R2, D1, etc.)entrypoint: Worker entrypoint path- Default:
.svelte-kit/cloudflare/_worker.js
- Default:
assets: Static assets directory- Default:
.svelte-kit/cloudflare
- Default:
compatibilityDate: Cloudflare compatibility date- Minimum:
2024-09-23(required fornodejs_compat)
- Minimum:
compatibilityFlags: Additional compatibility flags- Default:
["nodejs_compat"]
- Default:
Accessing Bindings
Access Cloudflare bindings in your SvelteKit application:Server Load Functions
Server Actions
API Routes
Local Development
SvelteKit provides excellent local development support:- Emulated Cloudflare
platform.envbindings - Hot module replacement
- Fast refresh
Node.js Compatibility
The SvelteKit resource automatically enablesnodejs_compat compatibility flag, which provides:
- Node.js built-in modules (
fs,path,crypto, etc.) - Support for npm packages that depend on Node.js APIs
- Full SvelteKit feature compatibility
Minimum Compatibility Date
Fornodejs_compat support, the compatibility date must be >= 2024-09-23:
TypeScript Configuration
Configure TypeScript for Cloudflare platform types:Deployment Best Practices
- Keep
.svelte-kitdirectory in.gitignore - Use environment variables for secrets via
alchemy.secret.env.X - Test bindings locally using SvelteKit’s platform proxy
- Configure proper TypeScript types for platform bindings
Related Resources
- Website - Base resource for web applications
- D1 Database - SQL database
- KV Namespace - Key-value storage
- R2 Bucket - Object storage