Пример Express.js-приложения для деплоя можно найти на Гитхабе.
При сборке приложения используется следующая среда:
Сборка приложения всегда выполняется в корне репозитория, поэтому файл package.json
должен быть размещён именно там. Если он находится в подкаталоге (например, landing
), команду сборки необходимо изменить. Например:
npm run --prefix landing build
Во время сборки будут выполнены следующие команды:
apt install -y nodejs --fix-missing
npm install pm2@latest -g
npm install express
Если в проекте есть файл package.json
и используется yarn
, дополнительно будет выполнено:
apt-get remove -y cmdtest yarn
npm install --global yarn
cd /<DIRECTORY> && yarn install --check-files
В остальных случаях при наличии package.json
:
cd /<DIRECTORY> && npm install
<DIRECTORY>
— путь к каталогу, в котором находится package.json
. В большинстве случаев это корень проекта.
Для запуска используется менеджер процессов PM2. Команда по умолчанию:
pm2 start --no-daemon файл.js
Вместо файл.js
может использоваться один из следующих файлов :
app.js
server.js
main.js
index.js
Если с развертыванием возникают проблемы, в первую очередь проверьте лог деплоя. Вы сможете определить, в какой момент что-то пошло не так.
Зачастую проблемы связаны с командой запуска. Проверьте, что всё в вашей среде разработки работает с pm2. Убедитесь, что все модули, необходимые для запуска приложения, присутствуют в файле package.json
.
Проблема связана с тем, что команда сборки yarn build
обращается к файлу package.json
, и если значение директивы build
не указано, возникает ошибка.
Чтобы устранить ее, необходимо добавить необходимые директивы в секцию scripts
файла package.json
. Подробнее об использовании scripts
— здесь.
Хочется иметь возможность выбрать файл запуска, потому что у меня, к примеру, index.js лежит не в корне репозитория, а в папке ./dist, куда билдится проект.