Npm запустить скрипт PostStop на Ctrl + C - PullRequest
0 голосов
/ 22 мая 2018
Секция

Мои package.json скрипты выглядит следующим образом.

"scripts": {
  "prestart": "mongod",
  "start": "NODE_ENV=prod node server.js",
  "poststop": "mongo admin --eval 'db.shutdownServer()'",
  "predev": "mongod",
  "dev": "NODE_ENV=dev nodemon server.js"
},

Я использую пре- и пост-хуки для запуска mongod перед запуском моего сервера.Затем я убиваю свой сервер, используя ctrl + c .К сожалению, это не выполняет сценарий poststop.В результате повторный вызов npm/yarn start/dev приводит к ошибке и прерывается, поскольку mongod уже запущен.

Другой экземпляр mongod уже запущен в каталоге / data / db, завершается

Можно ли как-нибудь позвонить poststop на ctrl + c ?

1 Ответ

0 голосов
/ 11 декабря 2018

Вам нужно перехватить сигнал SIGINT и вернуть код успешного завершения (0) вместо

"scripts": {
  "prestart": "mongod",
  "start": "trap 'exit 0' SIGINT; NODE_ENV=prod node server.js",
  "poststart": "mongo admin --eval 'db.shutdownServer()'",
  "predev": "mongod",
  "dev": "NODE_ENV=dev nodemon server.js"
},
...