| 1 | # AWS Website: Nuxt |
| 2 | |
| 3 | Deploys a Nuxt app to AWS with `AWS.Website.Nuxt` — no `nitro.preset` edits, no CDK. |
| 4 | |
| 5 | The resource builds the app through the project's own `@nuxt/kit` with nitro's `aws-lambda` preset (your `nuxt.config.ts` loads natively), deploys the nitro server bundle on a streaming Lambda Function URL, and serves client assets + prerendered pages from S3 behind CloudFront. Values passed via `env` are exposed to server routes and SSR through `process.env`. |
| 6 | |
| 7 | ```ts |
| 8 | const site = yield* AWS.Website.Nuxt("NuxtSite", { |
| 9 | env: { |
| 10 | GREETING: "Hello from Nuxt on AWS!", |
| 11 | }, |
| 12 | }); |
| 13 | ``` |
| 14 | |
| 15 | ## Commands |
| 16 | |
| 17 | ```sh |
| 18 | bun alchemy deploy # build + deploy |
| 19 | bun alchemy dev # Nuxt's own dev server (nitro dev, HMR) |
| 20 | bun alchemy destroy # tear down |
| 21 | ``` |
| 22 | |
| 23 | ## Notes |
| 24 | |
| 25 | - `@alchemy.run/frontend-frameworks` must be installed in the project — the server's source provider is loaded from its `/nuxt` export at deploy time. |
| 26 | - Unchanged projects skip the build and deploy entirely (the project tree is content-hashed, respecting `.gitignore`). |
| 27 | - In `alchemy dev`, the site is Nuxt's own dev server (native HMR) and no AWS resources are created; wrap the site in `Alchemy.remote()` to deploy the real infrastructure even during dev. |
| 28 | - Nitro's `isr` route rule is Vercel/Netlify-only and ignored on AWS Lambda — use `prerender` (as `/about` does here) or `cache` route rules instead. |
| 29 | - `test/integ.test.ts` deploys the stack and asserts SSR, the API route, the prerendered page, and static assets over HTTP. |