# Nitro

Run Rebask with Nitro.

## Install the Nitro adapter

::package-manager

```bash [pnpm]
pnpm add @rebask/nitro
```

```bash [npm]
npm install @rebask/nitro
```

```bash [bun]
bun add @rebask/nitro
```

```bash [yarn]
yarn add @rebask/nitro
```

::

Add `rebaskNitro()` to your Vite plugins:

```ts
import { rebaskNitro } from "@rebask/nitro"

plugins: [
  rsc(),
  react(),
  rebask(),
  rebaskNitro({
    preset: "node-server",
    serverDir: "./server",
  }),
]
```

`rebaskNitro()` accepts Nitro’s Vite plugin options. `preset` selects the deployment target and
`serverDir` is where Nitro routes and middleware live.

[PPR](../rendering/ppr.md) is available on the filesystem-based `node-server` and `bun` presets.
Other Nitro presets run the Rebask handler without PPR.

Nitro presets such as `node-server` and `cloudflare-pages` build the server output using Nitro’s
normal deployment flow.

A [`proxy.ts`](../routing/proxy.md) is built into a separate bundle and runs before Nitro routes and
static files.

## Run locally

With `node-server`, start the built output with:

```bash
node .output/server/index.mjs
```

## Nitro on Vercel

With both `rebaskNitro()` and [`vercelAdapter()`](./vercel.md), a Vercel build (`VERCEL=1`) uses
Nitro's Vercel preset with the adapter's PPR output:

```ts
plugins: [
  rsc(),
  react(),
  rebaskNitro({ serverDir: "./server" }),
  rebask(),
  vercelAdapter({ memory: 1024, maxDuration: 60, regions: ["iad1"] }),
]
```

The adapter options behave like this with Nitro:

| Option                                        | With Nitro                                                                                                          |
| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| `runtime`, `memory`, `maxDuration`, `regions` | Applied to Nitro's server function and the proxy function. Nitro's own `vercel.functions` settings take precedence. |
| `images`                                      | Works as described in [Images](./vercel.md#images).                                                                 |
| `disablePrerender`                            | Works as described in [`disablePrerender`](./vercel.md#disableprerender), and needs a custom `cacheHandler`.        |

For per-route function settings, see Nitro's [Vercel docs](https://nitro.build/deploy/providers/vercel).
