Encodera

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

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

Оглавление

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

Сервер разработки npm run dev удобен, но медленный и не предназначен для посетителей. Перед публикацией приложение собирают: Nuxt сжимает код, раскладывает файлы и готовит сервер Nitro, который запускается одной командой. Где именно будет работать сайт, определяет пресет — набор настроек сборки под конкретный хостинг.

Сборка

npm run build

Команда выполняет nuxt build и через несколько секунд выводит в терминале размер файлов и подсказку, как запустить результат. Всё собранное лежит в папке .output/:

.output/
├── public/        файлы для браузера: скрипты, стили, картинки
├── server/
│   └── index.mjs  сервер Nitro
└── nitro.json

Папка самодостаточна: node_modules для запуска ей не нужен.

Проверка перед публикацией

npm run preview

Команда запускает собранную версию на http://localhost:3000. Проверьте страницы, формы и вход: так сайт будет работать на сервере.

Запуск на своём сервере

Скопируйте папку .output/ на сервер с Node.js 20 или новее и запустите:

NUXT_ADMIN_PASSWORD=secret123 NUXT_SESSION_PASSWORD=ключ-не-короче-32-символов PORT=3000 node .output/server/index.mjs

Сервер начнёт принимать запросы на порту из переменной PORT. Файл .env здесь не читается, поэтому все настройки передают переменными окружения. Чтобы сервер перезапускался после сбоя, его обычно запускают через менеджер процессов, например PM2, или в Docker-контейнере.

Пресеты Nitro

По умолчанию сборка готовит сервер для Node.js (пресет node-server). Для облачных платформ нужен другой формат, и его задают пресетом:

// nuxt.config.ts
export default defineNuxtConfig({
  nitro: {
    preset: 'netlify'
  }
})
ПресетКуда
node-serverСвой сервер или VPS с Node.js
vercelVercel
netlifyNetlify
cloudflare-pagesCloudflare Pages
staticЛюбой статический хостинг

На Vercel и Netlify пресет обычно определяется сам: достаточно подключить репозиторий, и платформа выполнит npm run build. Пресет можно задать и переменной окружения при сборке: NITRO_PRESET=vercel.

Статический сайт

npm run generate

Команда собирает HTML всех страниц заранее в .output/public/. Эту папку можно загрузить на любой хостинг статических файлов. Серверных обработчиков при этом нет, поэтому API блога и форма работать не будут.

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

Хранить данные на диске сервера, когда сайт опубликован на бессерверной платформе вроде Vercel или Netlify. Там у сервера нет постоянного диска: файлы из .data/ пропадут, и статьи будут исчезать. Для таких платформ подключите хранилище useStorage к внешней службе (Redis, облачному хранилищу платформы) или используйте внешнюю базу данных.

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

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