Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Сборка и публикация

Сервер npm run dev удобен для разработки, но медленный и не подходит для посетителей. Перед публикацией проект собирают: Next.js проверяет типы, оптимизирует код, заранее отрисовывает статические страницы. Затем собранное приложение запускают на сервере или отдают хостингу.

Сборка и запуск

npm run build
npm run start

npm run build вызывает next build и складывает результат в папку .next. В конце печатается таблица маршрутов со значками ○, ● и ƒ из урока о статической отрисовке. npm run start запускает готовое приложение на http://localhost:3000 — так сайт будет работать у посетителей.

Перед публикацией всегда запускайте сборку локально: ошибки TypeScript, которые сервер разработки только показывал, здесь остановят сборку. Линтер в Next.js 16 при сборке не запускается — проверяйте код отдельно командой npm run lint. На сервере нужен Node.js 20.9 или новее.

Vercel

Vercel — хостинг от создателей Next.js. Проще всего загрузить проект на GitHub, затем на сайте Vercel выбрать «Add New Project» и указать репозиторий. Vercel сам выполнит сборку и даст адрес вида blog-anna.vercel.app. Каждый новый коммит публикуется автоматически.

Переменные окружения, например ADMIN_PASSWORD, задают в настройках проекта на Vercel. Учтите: файл SQLite на таком хостинге не сохраняется между запусками, поэтому там берут облачную базу, например PostgreSQL.

Свой сервер с Node.js

На обычном сервере (VPS) приложение запускается той же парой команд. Чтобы не копировать всю папку node_modules, включите режим standalone:

// next.config.ts
import type { NextConfig } from 'next';
 
const nextConfig: NextConfig = {
  output: 'standalone',
};
 
export default nextConfig;

После npm run build в папке .next/standalone появится файл server.js с минимальным набором зависимостей. Рядом с ним копируют папки public и .next/static и запускают node server.js. Чтобы приложение перезапускалось после сбоев, его обычно держат под менеджером процессов вроде PM2 или в Docker-контейнере, а перед ним ставят Nginx.

Статический экспорт

Если сайту не нужен сервер — нет форм, входа, API, — его можно выгрузить как набор HTML-файлов:

// next.config.ts (фрагмент)
const nextConfig: NextConfig = {
  output: 'export',
};

npm run build создаст папку out с готовыми файлами, которые можно положить на любой статический хостинг. Серверные действия, прокси, куки и динамические страницы без generateStaticParams в этом режиме не работают.

Сравнение

СпособСерверЧто работает
VercelНе нужен свойВсё
Node.js, output: 'standalone'Свой VPSВсё
output: 'export'Любой статический хостингТолько статические страницы

Частая ошибка

Запускать на сервере npm run dev вместо сборки. Сайт будет работать, но медленно, с отладочными сообщениями и без кеширования. На сервере всегда выполняйте npm run build, а затем npm run start или node server.js.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.