Подготовка к деплою
Перед деплоем проект нужно подготовить: переменные, сборка, проверки.
Переменные окружения
.env.local — локально
DATABASE_URL=postgresql://localhost:5432/myapp
AUTH_SECRET=dev-secret
NEXT_PUBLIC_API_URL=http://localhost:3000
.env.example — в репозиторий
DATABASE_URL=
AUTH_SECRET=
NEXT_PUBLIC_API_URL=
Без значений. Показывает, какие переменные нужны.
В .gitignore
.env
.env.local
.env*.local
Секреты не попадают в репозиторий.
NEXT_PUBLIC_*
Переменные с префиксом NEXT_PUBLIC_ доступны на клиенте. Попадают в бандл — не храни секреты.
const apiUrl = process.env.NEXT_PUBLIC_API_URL; // доступно везде
const secret = process.env.AUTH_SECRET; // только на сервере
Проверка типов
npx tsc --noEmit
Или в package.json:
{
"scripts": {
"typecheck": "tsc --noEmit"
}
}
Линтер
npm run lint
Или:
npx eslint .
Форматирование
Prettier:
npx prettier --write .
Сборка
npm run build
Проверь, что сборка проходит без ошибок и без предупреждений. Предупреждения часто указывают на проблемы в продакшене.
Анализ бандла
ANALYZE=true npm run build
Показывает, что занимает место. Тяжёлые зависимости можно заменить или динамически импортировать.
Размер бандла
npm run build
Vercel покажет размер каждой страницы. Первая загрузка не должна быть больше ~200 КБ JS.
Проверка продакшен-сборки
npm run build
npm run start
Открой http://localhost:3000 — это то, что увидит пользователь.
Тесты
Если есть — прогони:
npm test
npm run test:e2e
Чек-лист
.env.localне в репозитории.env.exampleобновлёнtsc --noEmitпроходит- Линтер без ошибок
- Сборка без ошибок
- Продакшен-сборка работает
- Тесты проходят
- Размер бандла в норме
- Все секреты — на сервере
Итоги
- Переменные через
.env NEXT_PUBLIC_*— для клиента- Проверяй типы и линтер
- Сборка без ошибок
- Анализ бандла
- Тестируй продакшен-сборку