Как создать производственную сборку API, выполненную с помощью NESTJS - PullRequest
0 голосов
/ 17 февраля 2019

Я создаю рабочую версию API, которую я создал с использованием инфраструктуры NESTJS, и хотел бы знать, какие файлы я должен загрузить на сервер.Когда я запускаю компиляцию «npm run start: prod», она генерирует папку «dist», но я пытался работать только с ней, но этого недостаточно для запуска моего приложения.Нужно ли загружать все файлы на сервер?Я провел несколько тестов, удалив папки, которые я использовал во время разработки, но смог запустить только в производственном режиме, когда все было в режиме разработки.

Я что-то искал в документации, но ничего не нашел.кто-нибудь может мне помочь?

Спасибо

Ответы [ 3 ]

0 голосов
/ 18 февраля 2019

Честно говоря, вам действительно нужна только папка dist, поскольку это JS-файлы "соблюдаются".Чтобы запустить ваше приложение, обычно вы используете эту команду node dist/main.js.Относительно того, какие файлы вы загружаете, решать только вам.Лично я использую много непрерывной интеграции, поэтому я бы просто клонировал репо в мой контейнер / сервер и использовал yarn start:prod.Это так, что каждый раз, когда я развертываю, я генерирую необходимые файлы для запуска в производственной среде.

Как упомянуто @Kim Kern, некоторые нодовые модули изначально собраны с использованием node-gyro;поэтому при развертывании всегда лучше создавать ваши node_modules на сервере / контейнере.Ваш сценарий развертывания должен выглядеть примерно так:

git clone git@github.com:myuser/myrepo.git /var/www/
cd /var/www/
node -v && \
yarn && \
yarn build && \
yarn start:prod

Вышеуказанный сценарий должен

1) вывести необходимое хранилище в «размещенный» каталог
2) проверить версию узла
3) установите node_modules и соберите собственные сценарии и т. Д.
4) создайте производственный дистрибутив
5) запустите производственные JS-скрипты

Если вы заглянете в файл package.json, вы заметите различныесценарии, которые запускаются при использовании yarn start, yarn start:dev и yarn start:prod.Находясь в dev, вы заметите использование ts-node, который является вещью типа бегунка узла машинописи (не могу вспомнить правильную фразу).Также сценарий start:dev использует нод-режим для перезапуска сценария ts-node.Вы также увидите, что сценарий start:prod использует node dist/main.js и что сценарий prestart:prod запускает rm -rf dist && tsc, который удаляет папку dist и «компилирует» javascript, необходимый для производственной среды.

Однако недостаток приложения для машинописи на вашем сервере без непрерывной интеграции состоит в том, что существует вероятность ошибок компиляции машинописи, о которых вы не увидите или не узнаете, пока не запустите сценарии prod.Я бы порекомендовал поместить процедуру на место для компиляции javascipt из машинописного текста перед выполнением развертывания, поскольку вы не хотите удалять текущую сборку dist до того, как узнаете, что будет выпущен и запущен следующий выпуск!

0 голосов
/ 24 апреля 2019

Мы не создаем наше приложение на производстве, а вместо этого собираем его при создании нашего док-контейнера.

Для нас примерно такие шаги:

  1. Запустите установку npm и все, что угодноинструменты, необходимые для создания приложения.
  2. Создайте Docker-контейнер и скопируйте dist/, node_modules и package.json
  3. Внутри Docker-контейнера запустите npm rebuild bcrypt --update-binary
0 голосов
/ 17 февраля 2019

В основном вам понадобятся только зависимости в node_modules.Вы должны собирать библиотеки на своем сервере, а не копировать их с вашего компьютера разработчика.Такие библиотеки, как bcrypt, имеют машинный код и, вероятно, не будут работать на другом компьютере.( 30% библиотек npm имеют собственные привязки.)

Поэтому для вашего развертывания я бы рекомендовал проверить ваш git-репозиторий на вашем сервере, а затем просто запустить npm run start:prod (который создаетпроект каждый раз) прямо там.

...