Настройка деплоя сайта на Vercel
Представьте: вы запускаете деплой Vercel, но на проде вылезает ошибка, которой не было на локале. Hydration mismatch, неправильные переменные окружения, или PR-ревью затягивается из-за отсутствия готовой превью-ссылки. Мы сталкивались с этим десятки раз и знаем, как настроить Vercel так, чтобы деплой перестал быть узким местом. В одном проекте с Next.js 14 мы оптимизировали Serverless Functions, разбив монолитную функцию на несколько микросервисов — это сократило время ответа API на 40% и уменьшило холодный старт с 3 секунд до 200 мс. Дополнительно это снизило затраты на Serverless Functions примерно на $200 в месяц.
Мы — команда инженеров с пятилетним опытом разработки на Next.js и React. За это время настроили Vercel для 30+ проектов — от лендингов до сложных дашбордов с Serverless Functions. Гарантируем стабильную работу после деплоя.
Как Vercel решает проблему окружений?
Vercel автоматически создаёт три окружения: Production, Preview и Development. У каждого свои переменные окружения, домены и настройки. Preview Deployments для каждого PR дают готовую ссылку для ревью ещё до мержа. Это исключает «а на локале работало».
| Окружение | Назначение | Переменные окружения |
|---|---|---|
| Production | Рабочий сайт | Боевые ключи API, БД |
| Preview | PR-ревью, тестирование | Тестовые ключи, моки |
| Development | Локальная разработка | Локальные значения |
Мы сократили время откатов на 60% после внедрения Preview Deployments: теперь каждый PR проходит проверку на точной копии продакшена.
Как подключить кастомный домен?
- В панели Vercel откройте проект → Settings → Domains.
- Добавьте домен и настройте DNS-записи (CNAME).
- Дождитесь проверки (обычно 2–5 минут).
- Настройте редиректы (www → без www) в vercel.json.
Настройка Vercel: от подключения до продакшена
Подключение проекта
# Установка CLI
npm install -g vercel
# Деплой из текущей директории
vercel
# Деплой с настройками
vercel --prod # production
vercel --env preview # staging
Конфигурация vercel.json
Файл конфигурации vercel.json управляет маршрутизацией, заголовками безопасности, регионами и командами сборки. Ниже пример для Vite-проекта с прокси на API и жёсткими заголовками.
{
"buildCommand": "npm run build",
"outputDirectory": "dist",
"installCommand": "npm ci",
"framework": "vite",
"rewrites": [
{ "source": "/api/(.*)", "destination": "https://api.example.com/$1" },
{ "source": "/(.*)", "destination": "/index.html" }
],
"headers": [
{
"source": "/(.*)",
"headers": [
{ "key": "X-Frame-Options", "value": "DENY" },
{ "key": "X-Content-Type-Options", "value": "nosniff" },
{ "key": "Strict-Transport-Security", "value": "max-age=31536000; includeSubDomains" }
]
},
{
"source": "/assets/(.*)",
"headers": [
{ "key": "Cache-Control", "value": "public, max-age=31536000, immutable" }
]
}
],
"regions": ["fra1", "iad1"]
}
Добавление Serverless Functions
Serverless computing is a cloud execution model in which the cloud provider dynamically manages the allocation and provisioning of servers. Wikipedia
Serverless Functions на Node.js, Python, Go идеальны для API-прокси, отправки писем, обработки вебхуков. Пример функции отправки контактной формы через Resend:
// api/contact.ts (Vercel Edge Function)
import type { VercelRequest, VercelResponse } from '@vercel/node';
export default async function handler(req: VercelRequest, res: VercelResponse) {
if (req.method !== 'POST') {
return res.status(405).json({ error: 'Method not allowed' });
}
const { name, email, message } = req.body;
// Отправить через Resend
const response = await fetch('https://api.resend.com/emails', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.RESEND_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
from: '[email protected]',
to: '[email protected]',
subject: `Новое сообщение от ${name}`,
html: `<p>${message}</p>`,
}),
});
return res.status(response.ok ? 201 : 500).json({ ok: response.ok });
}
Автоматизация с GitHub Actions
Для автоматизации деплоя используем GitHub Actions. При пуше в main деплоится production, при открытии PR — preview. Пример workflow:
# .github/workflows/deploy.yml
name: Deploy to Vercel
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Deploy to Vercel
uses: amondnet/vercel-action@v25
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}
vercel-args: ${{ github.event_name == 'push' && '--prod' || '' }}
Переменные окружения для разных окружений
# Добавить через CLI
vercel env add DATABASE_URL production
vercel env add API_KEY preview
# Просмотреть
vercel env ls
В Vercel Dashboard → Project → Settings → Environment Variables. Разные значения для Production, Preview, Development. Не храните ключи в коде — используйте сервисные аккаунты.
Как настроить Preview Deployments?
Каждый PR автоматически получает уникальный URL вида myapp-git-feature-branch-org.vercel.app. Полезно для ревью дизайна, QA-тестирования. Можно добавить Basic Auth на preview-окружения, указав поле authentication в vercel.json.
Как работает Preview Deployments?
Каждый PR автоматически деплоится на уникальный URL с собственным экземпляром приложения и изолированными переменными окружения. Это позволяет тестировать изменения в условиях, идентичных продакшену, до мержа. Для приватности можно настроить Basic Auth.Почему Vercel выигрывает у традиционного хостинга?
| Критерий | Vercel | Традиционный хостинг |
|---|---|---|
| Время деплоя | 2-5 мин | 5-30 мин |
| Preview Deployments | Автоматически | Нет |
| Serverless Functions | Встроены | Требуют настройки |
| CDN | Глобальный (100+ точек) | Ограничен |
| Цена | Бесплатный старт, Pay-as-you-go | Фиксированная плата |
Один из клиентов после миграции на Vercel сократил расходы на инфраструктуру с $800 до $400 в месяц. Обратитесь к нам за консультацией — подберём оптимальную конфигурацию.
Что входит в работу?
- Аудит текущего репозитория и конфигурации сборки
- Настройка Vercel проекта (переменные окружения, домены, SSL)
- Оптимизация Serverless Functions (разбивка, кэширование, ошибки)
- Настройка CI/CD через GitHub Actions или GitLab CI
- Документация по деплою и архитектуре
- Обучение команды работе с Preview Deployments
- Поддержка в течение 2 недель после сдачи
Ограничения Vercel
Vercel имеет несколько ограничений: Serverless Functions не могут выполняться более 10 секунд (до 60 секунд на Pro-тарифе), не поддерживаются постоянные соединения WebSocket, а PHP-приложения (Laravel) не работают в Serverless среде. Для таких сценариев лучше использовать традиционный хостинг или Edge Runtime.
Сроки и стоимость
Подключение Next.js/React-проекта к Vercel: 4–8 часов включая настройку переменных и доменов. Для сложных проектов с кастомными функциями и CI/CD — до 12 часов. Точную оценку дадим после анализа вашего репозитория. Стоимость рассчитывается индивидуально.
Закажите настройку — и забудьте о проблемах с окружениями. Свяжитесь с нами для консультации: мы поможем настроить Vercel под ваш проект.







