Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 6 additions & 25 deletions packages/vite-plugin-react-router/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,33 +10,28 @@ To deploy a React Router 7+ site to Netlify, install this package:
npm install @netlify/vite-plugin-react-router
```

It's also recommended (but not required) to use the
[Netlify Vite plugin](https://www.npmjs.com/package/@netlify/vite-plugin), which provides full Netlify platform
emulation directly in your local dev server:

```sh
npm install --save-dev @netlify/vite-plugin
```

and include the Netlify plugin in your `vite.config.ts`:
Then include the Netlify plugin in your `vite.config.ts`:

```typescript
import { reactRouter } from '@react-router/dev/vite'
import { defineConfig } from 'vite'
import tsconfigPaths from 'vite-tsconfig-paths'
import netlifyReactRouter from '@netlify/vite-plugin-react-router' // <- add this
import netlify from '@netlify/vite-plugin' // <- add this (optional)

export default defineConfig({
plugins: [
reactRouter(),
tsconfigPaths(),
netlifyReactRouter(), // <- add this
netlify(), // <- add this (optional)
],
})
```

> [!NOTE]
>
> This plugin automatically includes [`@netlify/vite-plugin`](https://npmx.dev/@netlify/vite-plugin), which provides
> full Netlify platform emulation directly in your local dev server.

Comment thread
pieh marked this conversation as resolved.
Your app is ready to [deploy to Netlify](https://docs.netlify.com/deploy/create-deploys/).

### Deploying to Edge Functions
Expand All @@ -53,7 +48,6 @@ export default defineConfig({
reactRouter(),
tsconfigPaths(),
netlifyReactRouter({ edge: true }), // <- deploy to Edge Functions
netlify(),
],
})
```
Expand Down Expand Up @@ -88,7 +82,6 @@ export default defineConfig({
edge: true,
excludedPaths: ['/ping', '/api/*', '/webhooks/*'],
}),
netlify(),
],
})
```
Expand Down Expand Up @@ -159,12 +152,6 @@ export default function Example() {
}
```

> [!IMPORTANT]
>
> Note that in local development, `netlifyRouterContext` requires Netlify platform emulation, which is provided
> seamlessly by [`@netlify/vite-plugin`](https://www.npmjs.com/package/@netlify/vite-plugin) (or Netlify CLI - up to
> you).

### Middleware context

React Router introduced a stable middleware feature in 7.9.0.
Expand Down Expand Up @@ -193,9 +180,3 @@ export default function Home() {
return <h1>Hello world</h1>
}
```

> [!IMPORTANT]
>
> Note that in local development, `netlifyRouterContext` requires Netlify platform emulation, which is provided
> seamlessly by [`@netlify/vite-plugin`](https://www.npmjs.com/package/@netlify/vite-plugin) (or Netlify CLI - up to
> you).
1 change: 1 addition & 0 deletions packages/vite-plugin-react-router/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@
"dependencies": {
"@netlify/edge-functions": "^3.0.4",
"@netlify/functions": "^5.1.3",
"@netlify/vite-plugin": "^2.11.0",
"@remix-run/node-fetch-server": "^0.9.0",
"isbot": "^5.1.25",
"tinyglobby": "^0.2.10"
Expand Down
7 changes: 5 additions & 2 deletions packages/vite-plugin-react-router/src/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { access, mkdir, writeFile } from 'node:fs/promises'
import { dirname, join, relative, resolve, sep } from 'node:path'
import { sep as posixSep } from 'node:path/posix'

import netlifyVitePlugin from '@netlify/vite-plugin'
import { createRequest, sendResponse } from '@remix-run/node-fetch-server'
import type { Plugin, ResolvedConfig } from 'vite'
import { glob } from 'tinyglobby'
Expand Down Expand Up @@ -118,7 +119,7 @@ function generateEdgeFunction(handlerPath: string, excludedPath: Array<string>)
`
}

export function netlifyPlugin(options: NetlifyPluginOptions = {}): Plugin {
export function netlifyPlugin(options: NetlifyPluginOptions = {}): Plugin[] {
const edge = options.edge ?? false
const additionalExcludedPaths = options.excludedPaths ?? []
let resolvedConfig: ResolvedConfig
Expand All @@ -127,7 +128,7 @@ export function netlifyPlugin(options: NetlifyPluginOptions = {}): Plugin {
let isHydrogenSite = false
let userServerFile: string | undefined

return {
const reactRouterPlugin: Plugin = {
name: 'vite-plugin-netlify-react-router',
config(_config, { command, isSsrBuild }) {
currentCommand = command
Expand Down Expand Up @@ -323,4 +324,6 @@ export function netlifyPlugin(options: NetlifyPluginOptions = {}): Plugin {
}
},
}

return [reactRouterPlugin, ...netlifyVitePlugin()]
}
Loading
Loading