Запустите пользовательский сценарий NPM, который зависит от того, на каком сервере находится

#node.js #npm

Вопрос:

Я хочу запустить сценарий npm, для которого сервер должен работать в течение всего времени выполнения сценария.

Мой сценарий выглядит так

 "scripts" :{ "start": "tsc amp;amp; node dist/app.js"}
 

Это мой основной скрипт для запуска моего сервера, который отлично работает. Однако,
У меня в проекте узла есть скрипт get_data.js , который я буду использовать для сбора данных и сохранения в базе данных ( npm run save_data ). Я хочу, чтобы сервер был остановлен по get_data.js завершении, так как я просто заинтересован в получении данных.

     "scripts" :{ 
        "start": "tsc amp;amp; node dist/app.js", 
        "save_data": "tsc amp;amp; node dist/get_data.js"
    }
 

Очевидно, что мой save_data сценарий неправильный. Есть какие-нибудь идеи или рекомендации, что я могу сделать?

Комментарии:

1. Я бы добавил pm2, затем скрипт postinstall , который запускает a pm2 start "npm run start:app" , затем переключился start на start:app и добавил тот, для start которого pm2 start all "save_data": "pm2 stop all amp;amp; tsc amp;amp; node dist/get_data.js" вместо этого есть, в основном поместите pm2 впереди, чтобы вы могли отменить запуск при запуске другого скрипта

Ответ №1:

Возможно, я неправильно истолковываю ваш вопрос, но я думаю, что то, что вы хотите, находится process.exit(0); в конце «get_data.js» или всякий раз, когда вы определили, что хотите, чтобы процесс завершился в вашем сценарии.

(Хотя я должен отметить, что get_data.js должно идти своим чередом и завершиться само собой, если только в вашем коде нет чего-то, что препятствует этому.)

Ответ №2:

Вы можете напрямую позвонить save_data внутрь start :

 "start": "tsc amp;amp; node dist/app.js amp;amp; npm run save_data"
 

Комментарии:

1. Спасибо. Я не хочу save_data работать, когда сервер работает в нормальном состоянии npm start . Я хочу save_data запустить его так же, как и любые другие сценарии, такие как npm lint и npm test .