Запустите npm postscript после нажатия Ctrl + C на сервере - PullRequest
0 голосов
/ 12 апреля 2020

Я запускаю свою базу данных разработки в контейнере.

Я намерен автоматизировать запуск и остановку контейнера с помощью npm, поэтому я добавил несколько сценариев pre и post в свои package.json:

"prewatch": "docker start mongo",
"watch": "nodemon app.js",
"postwatch": "docker stop mongo"

Проблема, которую я обнаружил, заключается в том, что мой сценарий post не будет работать после выключения nodemon с помощью Ctrl+C.

Есть какие-нибудь идеи для преодоления этого?

1 Ответ

0 голосов
/ 12 апреля 2020

Может ли добавление в nodemon config для событий сценарий может решить вашу проблему?

Например, через пакет. json:

{

  "nodemonConfig": {
    "events": {
      "crash": "docker stop mongo"
    } 
  }
}

Обновление:

TLDR: здесь не работают события nodemon, отключение restartable позволяет добиться ожидаемого поведения.

При добавлении в конфигурацию restartable: false, например:

  "scripts": {
    "prestart": "echo \"npm:prestart\"",
    "start": "nodemon server.js", 
    "poststart": "echo \"npm:poststart\""
  },

  "nodemonConfig": {
    "restartable": false,
    "events": {
      "start": "echo \"Start event\"",
      "crash": "echo \"Crash event\"",
      "exit": "echo \"Exit event\""
    }
  },

И начните с npm start -- -V и дважды нажмите Ctrl+c Я получил следующее:

> nodemon_events@1.0.0 prestart /home/kyr/test/nodemon_events
> echo "npm:prestart"

npm:prestart

> nodemon_events@1.0.0 start /home/kyr/test/nodemon_events
> nodemon server.js "-V"

[nodemon] 2.0.3
[nodemon] reading config ./package.json
[nodemon] send SIGHUP to 8929 to restart
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] bind start -> `echo "Start event"`
[nodemon] bind crash -> `echo "Crash event"`
[nodemon] bind exit -> `echo "Exit event"`
[nodemon] starting `node server.js`
[nodemon] forking
[nodemon] child pid: 8942
Start event
[nodemon] watching 2 files
server:run
[nodemon] exiting

> nodemon_events@1.0.0 poststart /home/kyr/test/nodemon_events
> echo "npm:poststart"

npm:poststart

Это выглядит странно, но может решить вашу проблему .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...