Сборка проекта для production сервера во фреймворке Nuxt.js

Во фреймворке Nuxt.js у нас есть возможность собирать проект для production сервера, то есть для того, чтобы выложить его на рабочий сервер. Это можно сделать несколькими способами, и один из таких способов мы сейчас рассмотрим.

Документация по этому вопросу находится в разделе Deployment. Здесь можно увидеть различные методы сборки проекта для production сервера.

Сборка с помощью Node.js сервера

Первый способ, на котором мы остановимся, — это сборка с помощью Node.js сервера. Благодаря этому способу у нас остаётся server-side rendering, то есть наш проект будет оптимизирован для поисковых систем. В результате будет сгенерирован скрипт, который можно запустить с помощью Node.js сервера, и он будет работать как отдельная служба. Соответственно, наш проект будет доступен на сервере.

Генерация приложения

Давайте рассмотрим, как можно сгенерировать такое приложение. Если открыть файл package.json, можно увидеть команду nuxt build. Попробуем её выполнить. Выполняем команду:

npm run build

В результате собирается проект для запуска на Node.js сервере. Для этого на вашей операционной системе, либо на локальном компьютере, либо на удалённом сервере, должен быть установлен Node.js.

Если всё прошло успешно, должна появиться папка output, в которой будет подпапка server. В ней находится главный файл — index.mjs. Запускаем сервер с помощью этого файла, и он, как вы видите, запустился как служба и стал доступен на определённом порту.

Доступность приложения

Если обратиться к этому порту, наше приложение становится доступным. Вы можете переходить по роутам внутри приложения. Например, можно перейти на роут /parent/test, который существует в проекте. Таким образом, мы получили службу, запускаемую с помощью Node.js, которая будет доступна либо на локальном компьютере, либо на удалённом сервере.

Настройка серверного окружения

Следующий шаг — настроить серверное окружение так, чтобы эта служба всегда была запущена и доступна по определённому IP-адресу или доменному имени. Но это уже отдельная история, которая требует дополнительных настроек.