1import * as Alchemy from "alchemy";
2import * as Cloudflare from "alchemy/Cloudflare";
3import * as Effect from "effect/Effect";
4
5export default Alchemy.Stack(
6 "CloudflareWebsiteNextjsExample",
7 {
8 providers: Cloudflare.providers(),
9 state: Cloudflare.state(),
10 },
11 Effect.gen(function* () {
12 const site = yield* Cloudflare.Website.Nextjs("Nextjs", {
13 // Only hash the files that affect the build, so unchanged sources
14 // skip the OpenNext build (and the deploy) entirely.
15 memo: {
16 include: [
17 "app/**",
18 "public/**",
19 "package.json",
20 "next.config.mjs",
21 "postcss.config.mjs",
22 "tsconfig.json",
23 ],
24 },
25 env: {
26 GREETING: "Hello from Next.js on Cloudflare!",
27 },
28 });
29
30 return {
31 url: site.url,
32 };
33 }),
34);