Как автоматически перезагрузить проект Node.js при использовании pm2

В настоящее время я программирую Node.js с помощью Express.js, и каждый раз, когда я меняю строку кода в файловом маршрутизаторе или приложении, мне нужно ввести команду:

pm2 reload id_project.

Как мне заставить pm2 автоматически перезагружать проект при изменении файла?

Ответ 1

По умолчанию узел не обновляет наш сервер автоматически каждый раз, когда мы меняем файлы. Я не знаю о конкретном решении pm2, но вы можете сделать это с помощью nodemon. Просто установите с: npm install -g nodemon и используйте с: nodemon server.js.

Лично, похоже, ответ @rogier-spieker должен получить принятый ответ. (Я даже не могу удалить этот ответ, если он принят)

Ответ 2

Вам нужно начать свой проект pm2 с опцией --watch:

pm2 start <script|name|id> --watch

Где <script|name|id> относится к:

  • script путь к сценарию, который вы хотите, чтобы pm2 обрабатывал
  • name имя конфигурации в файле "экосистемы"
  • id относится к уже запущенному приложению, использующему pm2, которое можно получить с помощью pm2 list (обратите внимание, что для этого на самом деле потребуется restart вместо start, поэтому, вероятно, это наименее желательно из варианты)

Вы также можете указать, какие файлы/каталоги игнорировать:

pm2 start <script> --watch --ignore-watch "node_modules"

Смотреть & Перезапуск

Или создайте "экосистемный" файл json, описывающий, как вы хотите, чтобы pm2 относился к вашему проекту:

{
  "name": "project_name",
  "script": "index.js",
  "watch": true,
  "ignore_watch": ["node_modules"]
}

параметры JSON

Ответ 3

  PM2 поставляется с удобным средством разработки, которое позволяет запускать приложение и перезапускать его при изменении файла:

# Start your application in development mode
# it print the logs and restart on file change too

# Two way of running your application :
pm2-dev start my-app.js

# or

pm2-dev my-app.js

Ответ 4

pm2 - менеджер процессов Node, в котором много наворотов. Вы можете запустить приведенную ниже команду для автоматического перезапуска приложения узла при обнаружении изменений файла в каталоге.

pm2 start index.js --watch

Обратите внимание: поскольку pm2 запускает все в фоновом режиме, вы не можете просто ctrl+c выйти из запущенного процесса pm2. Вы должны остановить это, передав ID или имя.

pm2 stop 0
pm2 stop index

два других варианта ниже

npx supervisor index.js
nodemon index.js