mdcms/sample-sites/velox-docs/pages/deploy-vercel.md
2026-05-18 14:30:49 +07:00

183 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Deploy to Vercel
sort: 100
section-id: deployment
keywords: Vercel, deployment, serverless, edge, CI/CD, deploy
description: Step-by-step guide to deploying a Velox application to Vercel
language: en
---
# Deploy to Vercel
Vercel is the recommended hosting platform for Velox applications. The Velox Vercel adapter handles all configuration automatically — no manual `vercel.json` setup is required for most projects.
## Prerequisites
- A Vercel account ([vercel.com](https://vercel.com))
- The Vercel CLI: `npm install -g vercel`
- A Velox project committed to a Git repository (GitHub, GitLab, or Bitbucket)
## Automatic Deployment via Git Integration
### Step 1 — Push Your Project to Git
```bash
git init
git add .
git commit -m "Initial commit"
git remote add origin https://github.com/your-username/your-project.git
git push -u origin main
```
### Step 2 — Import the Project on Vercel
1. Go to [vercel.com/new](https://vercel.com/new)
2. Click **Add New Project****Import Git Repository**
3. Select your repository
4. Vercel automatically detects Velox and sets the correct build settings:
- **Framework Preset:** Velox
- **Build Command:** `velox build`
- **Output Directory:** `.velox/output`
- **Install Command:** `npm ci`
### Step 3 — Configure Environment Variables
In the Vercel project dashboard:
1. Go to **Settings****Environment Variables**
2. Add each variable from your `.env.production` file
Do **not** add `PUBLIC_BASE_URL` manually — Vercel sets `VERCEL_URL` automatically and the Velox Vercel adapter uses it.
### Step 4 — Deploy
Click **Deploy**. Vercel will:
1. Clone your repository
2. Install dependencies
3. Run `velox build`
4. Deploy to its global edge network
Your site is live at `https://your-project.vercel.app`.
## Vercel CLI Deployment
For manual or scripted deployments:
```bash
# Install adapter
npm install @velox/vercel
# Deploy to preview (equivalent to a branch deploy)
vercel
# Deploy to production
vercel --prod
```
## Configuring the Vercel Adapter
Install and configure `@velox/vercel`:
```bash
npm install @velox/vercel
```
```typescript
// velox.config.ts
import { defineConfig } from 'velox';
import { vercel } from '@velox/vercel';
export default defineConfig({
adapter: vercel({
// Route-level edge function configuration
edgeRoutes: ['/api/stream', '/api/realtime'],
// Override ISR revalidation for specific routes
isr: {
expiration: 60, // default revalidation (seconds)
bypassToken: process.env.VERCEL_ISR_BYPASS_TOKEN,
},
// Enable Vercel Image Optimisation (uses Vercel's CDN)
images: {
sizes: [640, 1080, 1920],
},
}),
});
```
## Edge Functions
Mark individual routes to run on Vercel Edge instead of Node.js serverless:
```typescript
// routes/api/stream+server.ts
export const config = { edge: true };
export const GET = defineHandler(async (req) => {
// Runs on Vercel Edge — uses Web APIs only
return new Response('Hello from edge!');
});
```
Edge functions are deployed globally in ~70 Vercel regions and have ~0ms cold start. Use them for latency-sensitive, stateless handlers.
## Custom Domains
1. Go to your project on Vercel → **Settings****Domains**
2. Click **Add Domain**
3. Enter your domain (e.g., `example.com`)
4. Follow the DNS configuration instructions:
- Add a **CNAME** record: `www``cname.vercel-dns.com`
- Add an **A** record: `@``76.76.21.21`
5. SSL certificates are provisioned automatically via Let's Encrypt
Set the canonical base URL environment variable in Vercel:
```
PUBLIC_BASE_URL = https://example.com
```
## Preview Deployments
Every pull request gets an automatic preview deployment at a unique URL (`https://your-project-git-branch-name.vercel.app`). This is configured by default and requires no additional setup.
To share preview deployments with your team, enable **Password Protection** under **Settings****Deployment Protection**.
## Build Cache
Velox's Velocitor build cache is automatically persisted across deployments by the Vercel adapter. Subsequent deployments typically build 35× faster than the first.
## `vercel.json` Reference
For advanced configuration, create a `vercel.json` at your project root:
```json
{
"regions": ["iad1", "fra1"],
"cleanUrls": true,
"trailingSlash": false,
"headers": [
{
"source": "/assets/(.*)",
"headers": [
{ "key": "Cache-Control", "value": "public, max-age=31536000, immutable" }
]
}
],
"redirects": [
{ "source": "/old-path", "destination": "/new-path", "permanent": true }
]
}
```
## Monitoring and Analytics
Enable Vercel Analytics and Speed Insights in your project dashboard. The Velox adapter hooks into these automatically — no code changes needed.
For custom event tracking:
```typescript
import { track } from '@vercel/analytics';
track('button_clicked', { component: 'Hero', variant: 'primary' });
```