Сбой рабочего развертывания при использовании сценариев CLI package.json - PullRequest
0 голосов
/ 20 апреля 2019

Я создал базовое приложение с помощью инструмента CLI (v6.3.0) и достиг того момента, когда я был готов перейти на рабочий сервер и столкнулся с проблемой.

Я развертываю с использованием Shipit(что, вероятно, не имеет значения), и частью этого процесса является установка зависимостей npm (с флагом --production).

Все развертывается без помех, пока мое развертывание не выполнит последнюю команду npm run start:prod (запустить приложение Nest на узле процесса).Который выполняет следующие шаги:

  1. Удаляет содержимое каталога dist rimraf dist && npm run build;
  2. Пытается перестроить содержимое каталога dist tsc -p tsconfig.build.json;
  3. Запускает node dist/main.js;

Проблема со всем этим в том, что пакет TypeScript, который, как я считаю, предоставляет команду tsc, является devDependency, а не зависимостью, которая устанавливается во время установки npm сфлаг --production.

Это ошибка, или я полностью упускаю точку команды npm run start:prod.Я ценю, что установка пакета TypeScript в глобальном масштабе может решить проблему, хотя я не был уверен, было ли это намерением или предположением?

Если вы развертываете NestJS в рабочей среде, используете ли вы какую-то другую стратегию?

1 Ответ

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

В серверных приложениях различие между dependencies и devDependencies не так важно, поскольку вы не отправляете свои зависимости и, следовательно, размер вашего приложения не так критичен.

Однако при развертывании в облаке может потребоваться сэкономить место.TypeScript не требуется для запуска вашего приложения после его компиляции.И вам не нужно перекомпилировать приложение, когда вы просто хотите перезапустить его.Итак, что вы можете сделать вместо этого:

Удалите сценарий prestart:prod.

Процедура развертывания:

  1. Установите все зависимости с помощью npm install
  2. Выполнить npm run build
  3. Сократить зависимости от разработчиков с помощью npm prune --production
  4. Выполнить npm run start:prod

Это в значительной степени происходит, когда я развертываюсь на heroku,

Кроме того, вы можете, конечно, объявить typescript в dependencies вместо devDependencies.

...