Остановить nodemon программно после запуска

Я работаю над API, который работает в фоновом режиме, у нас есть несколько вспомогательных методов, которые необходимо запускать как таковые nodemon --exec babel-node commands/router.js, например, для отображения всех маршрутов.

Обратите внимание, что node commands/router.js не может работать, так как нам нужен babel

На данный момент метод работает без проблем, но мне нужно остановить запуск nodemon после выполнения. Я понимаю, что nodemon должен продолжать работать после выполнения, но наш проект разработан таким образом, и мне нужно использовать nodemon для выполнения, а затем убить его.

Как я могу убить/остановить nodemon после запуска?

Код

пакет.json

{
  ...
  scripts: {
    "start": "nodemon --exec babel-node index.js",
    "router": "nodemon --exec babel-node commands/router.js"
  },
  ...
}

router.js

const script = () => {
  // Fetch and display routes
}

script()

person Mark Watney    schedule 02.03.2020    source источник


Ответы (2)


РЕДАКТИРОВАТЬ:

Из документации Nodemon правильный способ справиться с этим вариантом использования — вручную убить процесс с помощью метода gracefulShutdown, например:

process.once('SIGUSR2', function () {
  gracefulShutdown(function () {
    process.kill(process.pid, 'SIGUSR2');
  });
});

Вы можете прочитать больше здесь.

person Len Joseph    schedule 02.03.2020
comment
Спасибо за вашу помощь, я только что попробовал `import nodemon from nodemon; // ‹= Нужно импортировать вот так const script = () =› { // Выбрать и отобразить маршруты } script() nodemon.emit(quit); ` Но это не сработало, ты это имел в виду? - person Mark Watney; 02.03.2020
comment
Да, именно об этой стратегии я и думал. Я только что вернулся к документам Nodemon и отредактировал свой ответ, чтобы показать их рекомендуемую стратегию. - person Len Joseph; 03.03.2020
comment
По какой-то причине это не работает, я опубликую решение, как только найду. Спасибо :) - person Mark Watney; 04.03.2020

Мы нашли решение, удалив nodemon и завершив сценарии вручную с помощью process.exit().

Окончательный код

пакет.json

{
  ...
  scripts: {
    "start": "nodemon --exec babel-node index.js", // <= still called with nodemon
    "router": "babel-node commands/router.js"
  },
  ...
}

router.js

const script = () => {
  // Fetch and display routes

  process.exit()
}

script()
person Mark Watney    schedule 04.03.2020