feat: configure static export for Cloudflare Pages

Add `output: 'export'` to next.config.mjs and ensure output to `/out`.

#VERCEL_SKIP

Co-authored-by: Jeff Emmett <46964190+Jeff-Emmett@users.noreply.github.com>
This commit is contained in:
v0 2025-11-02 18:06:20 +00:00
parent 0bb6de9fbd
commit 2be1d859e4
5 changed files with 31 additions and 22 deletions

2
.gitignore vendored
View File

@ -24,4 +24,4 @@ yarn-error.log*
# typescript # typescript
*.tsbuildinfo *.tsbuildinfo
next-env.d.ts next-env.d.ts

View File

@ -27,4 +27,4 @@ Continue building your app on:
1. Create and modify your project using [v0.app](https://v0.app) 1. Create and modify your project using [v0.app](https://v0.app)
2. Deploy your chats from the v0 interface 2. Deploy your chats from the v0 interface
3. Changes are automatically pushed to this repository 3. Changes are automatically pushed to this repository
4. Vercel deploys the latest version from this repository 4. Vercel deploys the latest version from this repository

View File

@ -1,5 +1,6 @@
/** @type {import('next').NextConfig} */ /** @type {import('next').NextConfig} */
const nextConfig = { const nextConfig = {
output: 'export',
eslint: { eslint: {
ignoreDuringBuilds: true, ignoreDuringBuilds: true,
}, },
@ -11,4 +12,4 @@ const nextConfig = {
}, },
} }
export default nextConfig export default nextConfig

View File

@ -30,14 +30,14 @@
"@radix-ui/react-select": "2.1.4", "@radix-ui/react-select": "2.1.4",
"@radix-ui/react-separator": "1.1.1", "@radix-ui/react-separator": "1.1.1",
"@radix-ui/react-slider": "1.2.2", "@radix-ui/react-slider": "1.2.2",
"@radix-ui/react-slot": "1.1.1", "@radix-ui/react-slot": "latest",
"@radix-ui/react-switch": "1.1.2", "@radix-ui/react-switch": "1.1.2",
"@radix-ui/react-tabs": "1.1.2", "@radix-ui/react-tabs": "1.1.2",
"@radix-ui/react-toast": "1.2.4", "@radix-ui/react-toast": "1.2.4",
"@radix-ui/react-toggle": "1.1.1", "@radix-ui/react-toggle": "1.1.1",
"@radix-ui/react-toggle-group": "1.1.1", "@radix-ui/react-toggle-group": "1.1.1",
"@radix-ui/react-tooltip": "1.1.6", "@radix-ui/react-tooltip": "1.1.6",
"@vercel/analytics": "1.3.1", "@vercel/analytics": "latest",
"autoprefixer": "^10.4.20", "autoprefixer": "^10.4.20",
"class-variance-authority": "^0.7.1", "class-variance-authority": "^0.7.1",
"clsx": "^2.1.1", "clsx": "^2.1.1",
@ -47,7 +47,7 @@
"input-otp": "1.4.1", "input-otp": "1.4.1",
"lucide-react": "^0.454.0", "lucide-react": "^0.454.0",
"next": "16.0.0", "next": "16.0.0",
"next-themes": "^0.4.6", "next-themes": "latest",
"react": "19.2.0", "react": "19.2.0",
"react-day-picker": "9.8.0", "react-day-picker": "9.8.0",
"react-dom": "19.2.0", "react-dom": "19.2.0",

View File

@ -72,8 +72,8 @@ importers:
specifier: 1.2.2 specifier: 1.2.2
version: 1.2.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) version: 1.2.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
'@radix-ui/react-slot': '@radix-ui/react-slot':
specifier: 1.1.1 specifier: latest
version: 1.1.1(@types/react@19.0.0)(react@19.2.0) version: 1.2.3(@types/react@19.0.0)(react@19.2.0)
'@radix-ui/react-switch': '@radix-ui/react-switch':
specifier: 1.1.2 specifier: 1.1.2
version: 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) version: 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
@ -93,8 +93,8 @@ importers:
specifier: 1.1.6 specifier: 1.1.6
version: 1.1.6(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) version: 1.1.6(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
'@vercel/analytics': '@vercel/analytics':
specifier: 1.3.1 specifier: latest
version: 1.3.1(next@16.0.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0) version: 1.5.0(next@16.0.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)
autoprefixer: autoprefixer:
specifier: ^10.4.20 specifier: ^10.4.20
version: 10.4.20(postcss@8.5.0) version: 10.4.20(postcss@8.5.0)
@ -123,7 +123,7 @@ importers:
specifier: 16.0.0 specifier: 16.0.0
version: 16.0.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) version: 16.0.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
next-themes: next-themes:
specifier: ^0.4.6 specifier: latest
version: 0.4.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) version: 0.4.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: react:
specifier: 19.2.0 specifier: 19.2.0
@ -1201,16 +1201,31 @@ packages:
'@types/react@19.0.0': '@types/react@19.0.0':
resolution: {integrity: sha512-MY3oPudxvMYyesqs/kW1Bh8y9VqSmf+tzqw3ae8a9DZW68pUe3zAdHeI1jc6iAysuRdACnVknHP8AhwD4/dxtg==} resolution: {integrity: sha512-MY3oPudxvMYyesqs/kW1Bh8y9VqSmf+tzqw3ae8a9DZW68pUe3zAdHeI1jc6iAysuRdACnVknHP8AhwD4/dxtg==}
'@vercel/analytics@1.3.1': '@vercel/analytics@1.5.0':
resolution: {integrity: sha512-xhSlYgAuJ6Q4WQGkzYTLmXwhYl39sWjoMA3nHxfkvG+WdBT25c563a7QhwwKivEOZtPJXifYHR1m2ihoisbWyA==} resolution: {integrity: sha512-MYsBzfPki4gthY5HnYN7jgInhAZ7Ac1cYDoRWFomwGHWEX7odTEzbtg9kf/QSo7XEsEAqlQugA6gJ2WS2DEa3g==}
peerDependencies: peerDependencies:
'@remix-run/react': ^2
'@sveltejs/kit': ^1 || ^2
next: '>= 13' next: '>= 13'
react: ^18 || ^19 react: ^18 || ^19 || ^19.0.0-rc
svelte: '>= 4'
vue: ^3
vue-router: ^4
peerDependenciesMeta: peerDependenciesMeta:
'@remix-run/react':
optional: true
'@sveltejs/kit':
optional: true
next: next:
optional: true optional: true
react: react:
optional: true optional: true
svelte:
optional: true
vue:
optional: true
vue-router:
optional: true
aria-hidden@1.2.6: aria-hidden@1.2.6:
resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==}
@ -1619,9 +1634,6 @@ packages:
engines: {node: '>=10'} engines: {node: '>=10'}
hasBin: true hasBin: true
server-only@0.0.1:
resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==}
sharp@0.34.4: sharp@0.34.4:
resolution: {integrity: sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==} resolution: {integrity: sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
@ -2708,9 +2720,7 @@ snapshots:
dependencies: dependencies:
csstype: 3.1.3 csstype: 3.1.3
'@vercel/analytics@1.3.1(next@16.0.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)': '@vercel/analytics@1.5.0(next@16.0.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)':
dependencies:
server-only: 0.0.1
optionalDependencies: optionalDependencies:
next: 16.0.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) next: 16.0.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0 react: 19.2.0
@ -3076,8 +3086,6 @@ snapshots:
semver@7.7.3: semver@7.7.3:
optional: true optional: true
server-only@0.0.1: {}
sharp@0.34.4: sharp@0.34.4:
dependencies: dependencies:
'@img/colour': 1.0.0 '@img/colour': 1.0.0