Запуск приложения Node через Grunt

Я пытаюсь запустить приложение Node как задачу Grunt. Однако мне нужно порождать это как дочерний процесс, чтобы позволить мне параллельно запускать задачу наблюдения.

Это работает:

grunt.registerTask('start', function () {
  grunt.util.spawn(
    { cmd: 'node'
    , args: ['app.js']
    })

  grunt.task.run('watch:app')
})

Однако, когда задача наблюдения обнаруживает изменения, это снова запускает задачу запуска. Прежде чем я создаю другой дочерний процесс моего Node-приложения, мне нужно убить предыдущий.

Я могу'Однако я не могу понять, как убить процесс. Как то так не работает

var child

grunt.registerTask('start', function () {
  if (child) child.kill()
  child = grunt.util.spawn(
    { cmd: 'node'
    , args: ['app.js']
    })

  grunt.task.run('watch:app')
})

Похоже, что:

Даже несмотря на то, что я сохраняю порожденный процесс в переменной вне контекста функции, он не сохраняется, поэтому при следующем запуске задачи запуска будет дочерний.undefinedchild не имеетkill функция ...

Ответы на вопрос(2)

Ваш ответ на вопрос