Ответ 1
PM2 теперь поддерживает запуск npm:
pm2 start npm -- start
Есть ли способ для pm2 запускать npm start script или вам просто нужно запустить pm2 start app.js
Итак, в разработке
npm start
Тогда в производстве с pm2 вы будете запускать что-то вроде
pm2 start 'npm start'
Существует эквивалентный способ сделать это навсегда
forever start -c "npm start" ./
PM2 теперь поддерживает запуск npm:
pm2 start npm -- start
Те, кто использует конфигурацию script, как файл .json
для запуска процесса pm2, могут использовать npm start
или любой другой script как это -
мой-приложение-pm2.json
{
"apps": [
{
"name": "my-app",
"script": "npm",
"args" : "start"
}
]
}
Тогда просто -
pm2 start my-app-pm2.json
Изменить. Чтобы обрабатывать прецедент, когда у вас есть эта конфигурация script в родительском каталоге и вы хотите запустить приложение в подкаталоге, используйте атрибут cwd
.
Предположим, что наше приложение находится в подкаталоге nested-app
относительно этого файла конфигурации, затем -
{
"apps": [
{
"name": "my-nested-app",
"cwd": "./nested-app",
"script": "npm",
"args": "start"
}
]
}
Подробнее здесь.
Я написал оболочку script ниже (с именем start.sh
).
Потому что мой package.json
имеет параметр prestart
.
Поэтому я хочу запустить npm start
.
#!/bin/bash
cd /path/to/project
npm start
Затем запустите start.sh
через pm2.
pm2 start start.sh --name appNameYouLike
Да. Используйте pm2 start npm --no-automation --name {app name} -- run {script name}
. Оно работает. Флаг --no-automation
существует потому что без него PM2 не перезапустит ваше приложение при его сбое.
См., чтобы включить кластеризацию:
pm2 start npm --name "AppName" -i 0 -- run start
Как вы думаете?
К сожалению, похоже, что pm2 не поддерживает точные функции, которые вы запросили https://github.com/Unitech/PM2/issues/1317.
Альтернативой является использование файла ecosystem.json
Начало работы с развертыванием, которое может включать в себя установки для производственной среды и среды разработки. Тем не менее, это все еще использует npm start
для загрузки вашего приложения.
Теперь вы можете использовать следующий код:
pm2 start npm -- start
Следуйте по https://github.com/Unitech/pm2/issues/1317#issuecomment-220955319
Да, мы можем, теперь pm2 поддерживает запуск npm, --name к названию вида приложения.
pm2 start npm --name "app" -- start
Чтобы использовать npm run
pm2 start npm --name "{app_name}" -- run {script_name}